सूचियाँ (Lists)
एक वेरिएबल एक चीज़ रखता है। एक सूची क्रम में कई चीज़ें रखती है, सभी एक ही नाम के तहत। एक लीडरबोर्ड स्कोर का एक रैंक किया गया क्रम है। एक क्विज़ प्रश्नों का संग्रह है। जब आपको संबंधित मूल्यों के समूह को प्रबंधित करने की आवश्यकता हो, तो आपको एक सूची की आवश्यकता होती है।
एक सूची बनाना
वर्गाकार कोष्ठक, कॉमा से अलग किए गए मान। सूचियाँ किसी भी प्रकार के मिश्रण को रख सकती हैं, और एक खाली सूची मान्य है और एक प्रारंभिक बिंदु के रूप में सामान्य है जिसे आप समय के साथ बनाते हैं।
scores = [87, 92, 74, 65, 91]
players = ["आर्यन", "प्रिया", "रोहन"]
mixed = ["आर्यन", 87, True, 3.14] # कोई भी प्रकार, हालांकि असामान्य
empty = []इंडेक्सिंग और स्लाइसिंग
सूचियाँ स्ट्रिंग्स के समान संख्या प्रणाली का उपयोग करती हैं: स्थितियाँ 0 से शुरू होती हैं, ऋणात्मक संख्याएँ अंत से गिनती हैं। आप अपनी स्थिति के अनुसार किसी भी आइटम को पढ़ते हैं। चूंकि सूचियाँ म्यूटेबल हैं, आप एक विशिष्ट स्थिति पर लिख भी सकते हैं।
scores = [87, 92, 74, 65, 91]
scores[0] # 87 (पहला)
scores[-1] # 91 (अंतिम)
scores[1:3] # [92, 74]
scores[:2] # [87, 92]
scores[::-1] # [91, 65, 74, 92, 87] (उल्टा)
scores[0] = 90 # म्यूटेबल: काम करता है (स्ट्रिंग्स TypeError उठाएँगे)आइटम जोड़ना
आइटम जोड़ने के तीन तरीके। append() अंत में एक आइटम जोड़ता है और लगभग हर बार आप इसका उपयोग करेंगे। insert() किसी विशिष्ट स्थिति पर जोड़ता है। extend() एक अन्य सूची को मर्ज करता है।
scores = [87, 92, 74]
scores.append(65) # [87, 92, 74, 65]
scores.insert(1, 100) # [87, 100, 92, 74, 65]
scores.extend([55, 71]) # [87, 100, 92, 74, 65, 55, 71]एक सामान्य गलती: सूची के साथ append() पूरी सूची को एक आइटम के रूप में जोड़ता है, जिससे आपको एक सूची के अंदर एक सूची मिलती है। मर्ज करने के लिए extend() का उपयोग करें:
scores.append([55, 71]) # [..., [55, 71]] नेस्टेड सूची, शायद गलत
scores.extend([55, 71]) # [..., 55, 71] मर्ज किया गया, सहीआइटम हटाना
आइटम हटाने के चार उपकरण। remove() मान द्वारा खोज करता है। pop() स्थिति द्वारा हटाता है और आपको आइटम वापस देता है। del स्थिति द्वारा बिना रिटर्न मान के हटाता है। clear() पूरी सूची खाली करता है।
scores = [87, 92, 74, 65, 91]
scores.remove(74) # 74 की पहली घटना हटाता है
scores.pop() # अंतिम आइटम हटाता और लौटाता है (91)
scores.pop(0) # स्थिति 0 पर आइटम हटाता और लौटाता है (87)
del scores[1] # स्थिति 1 पर हटाता है, कोई रिटर्न मान नहीं
scores.clear() # सब कुछ हटा देता हैयदि मान सूची में नहीं है तो remove() ValueError उठाता है। यदि आप निश्चित नहीं हैं तो पहले in से जाँच करें:
if 74 in scores:
scores.remove(74)सॉर्टिंग
sorted() एक बिल्कुल नई सॉर्टेड सूची लौटाता है और आपके मूल को अछूता छोड़ देता है। .sort() सूची को जगह पर सॉर्ट करता है और None लौटाता है। यह अंतर जितना लगता है उससे अधिक मायने रखता है।
scores = [87, 42, 96, 55, 71]
ranked = sorted(scores) # [42, 55, 71, 87, 96] (नई सूची)
scores.sort() # जगह पर सॉर्ट, None लौटाता है
scores.sort(reverse=True) # [96, 87, 71, 55, 42]
result = scores.sort() # result None है, सॉर्टेड सूची नहींउपयोगी ऑपरेशन
Python में बिल्ट-इन टूल्स का एक सेट है जो सीधे सूचियों पर काम करते हैं। len(), sum(), min(), और max() वे चार हैं जिनका आप लगातार उपयोग करेंगे।
scores = [87, 92, 74, 65, 91]
len(scores) # 5
sum(scores) # 409
min(scores) # 65
max(scores) # 92
scores.count(87) # 1
scores.index(74) # 2
74 in scores # True
74 not in scores # False
scores.copy() # शैलो कॉपी
scores.reverse() # जगह पर उल्टा करता हैइटरेट करना
एक for लूप एक समय में एक आइटम सूची से गुजरता है। for के बाद वेरिएबल बारी-बारी से प्रत्येक आइटम प्राप्त करता है। जब आपको स्थिति भी चाहिए, तो enumerate() आपको मैन्युअल काउंटर के बिना दोनों देता है।
players = ["आर्यन", "प्रिया", "रोहन"]
for player in players:
print(player)
for i, player in enumerate(players, start=1):
print(f"{i}. {player}")
# 1. आर्यन
# 2. प्रिया
# 3. रोहनfor लूप्स और enumerate
for और enumerate() को Control flow अध्याय में पूरी तरह से शामिल किया गया है। संक्षिप्त संस्करण: for player in players प्रति आइटम एक बार चलता है; enumerate() आपको प्रत्येक इटरेशन पर स्थिति और मान दोनों देता है।
नेस्टेड सूचियाँ
एक सूची में अन्य सूचियाँ हो सकती हैं। यह है कि आप एक ग्रिड या तालिका का प्रतिनिधित्व कैसे करते हैं: पंक्तियों की एक सूची, प्रत्येक पंक्ति मानों की एक सूची है। वर्गाकार कोष्ठक के दो सेट एक आइटम तक पहुँचते हैं: पहला पंक्ति चुनता है, दूसरा कॉलम चुनता है।
grid = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
grid[0] # [1, 2, 3]
grid[1][2] # 6 (पंक्ति 1, कॉलम 2)म्यूटेबिलिटी: समस्या
यह लगभग सभी को आश्चर्यचकित करता है। एक सूची को एक नए वेरिएबल को असाइन करना कॉपी नहीं बनाता। दोनों नाम एक ही सूची की ओर इशारा करते हैं। एक को बदलें और आप दूसरे को बदल देते हैं। एक स्वतंत्र कॉपी पाने के लिए, आपको स्पष्ट रूप से एक के लिए पूछना होगा।
a = [1, 2, 3]
b = a # b एक कॉपी नहीं है; यह उसी सूची की ओर इशारा करता है
b.append(4)
print(a) # [1, 2, 3, 4] (बदला गया: a और b एक ही सूची हैं)b = a.copy() # स्वतंत्र कॉपी
b = list(a) # समान परिणाम
b = a[:] # यह भी समान है
# नेस्टेड सूचियाँ अभी भी अपने आंतरिक ऑब्जेक्ट साझा करती हैं:
matrix = [[1, 2], [3, 4]]
copy = matrix.copy()
copy[0].append(99)
print(matrix) # [[1, 2, 99], [3, 4]] (आंतरिक सूची साझा थी)अधिक मेथड्स
| Method | यह क्या करता है |
|---|---|
.append(item) | अंत में जोड़ें |
.insert(i, item) | स्थिति i पर सम्मिलित करें |
.extend(iterable) | एक iterable से सभी आइटम जोड़ें |
.remove(value) | मान की पहली घटना हटाएँ |
.pop(i) | स्थिति i पर आइटम हटाएँ और लौटाएँ (डिफ़ॉल्ट: अंतिम) |
.clear() | सभी आइटम हटाएँ |
.index(value) | पहली घटना की स्थिति |
.count(value) | घटनाओं की संख्या |
.sort() | जगह पर सॉर्ट करें |
.reverse() | जगह पर उल्टा करें |
.copy() | एक शैलो कॉपी लौटाएँ |
व्यावहारिक रूप से
एक स्कोर ट्रैकर बनाना: परिणाम जोड़ें, उन्हें सॉर्ट करें, और एक सारांश प्रिंट करें।
scores = []
scores.append(87)
scores.append(54)
scores.append(92)
scores.append(67)
scores.append(45)
scores.sort(reverse=True)
print(f"रैंक किए गए स्कोर: {scores}")
print(f"उच्चतम: {scores[0]}")
print(f"न्यूनतम: {scores[-1]}")
print(f"औसत: {sum(scores) / len(scores):.1f}")
print(f"टॉप 3: {scores[:3]}")
