सूचियाँ, टपल और स्लाइसिंग
व्यावहारिक उदाहरणों के साथ Python सूची-संचालन, स्लाइसिंग सिंटैक्स और टपल की अपरिवर्तनीयता में निपुण बनिए; ये उदाहरण प्रसिद्ध कोडिंग चुनौतियों से लिए गए हैं।
सूचियाँ, टपल और स्लाइसिंग, CoddyKit पर DSA Interview Prep का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह DSA Interview Prep सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DSA Interview Prep पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Python सूचियाँ: गतिशील ऐरे
Python की सूची एक गतिशील ऐरे होती है, जिसमें किसी भी प्रकार की चीज़ रखी जा सकती है और जो अपने-आप बढ़ती रहती है। यह क्रमबद्ध और परिवर्तनशील होती है तथा इंडेक्स के आधार पर O(1) समय में तुरंत पहुँच देती है। यह कोड इसकी मूल बातें दिखाता है।
nums = [3, 1, 4, 1, 5]
print(nums[0]) # 3
print(nums[-1]) # 5 (last element)
nums.append(9)
print(len(nums)) # 6सूची के सामान्य संचालन
इन्हें अच्छी तरह याद रखें: अंत में append और pop O(1) होते हैं, लेकिन शुरुआत में insert O(n) होता है। तंग लूप में remove से बचें—यह हर बार पूरी सूची में फिर से खोज करता है।
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print(stack.pop()) # 3 O(1)
print(stack) # [1, 2]
# insert at index 0 is O(n)
stack.insert(0, 0)
print(stack) # [0, 1, 2]स्लाइसिंग का सिंटैक्स समझें
स्लाइसिंग को lst[start:stop:step] की तरह पढ़ा जाता है और यह stop से ठीक पहले रुकती है। एक उपयोगी तरकीब: -1 का step सूची को बदले बिना उलट देता है। यह कोड हर रूप को समझाता है।
a = [0, 1, 2, 3, 4, 5]
print(a[1:4]) # [1, 2, 3]
print(a[:3]) # [0, 1, 2]
print(a[3:]) # [3, 4, 5]
print(a[::2]) # [0, 2, 4] every other
print(a[::-1]) # [5, 4, 3, 2, 1, 0] reversedस्लाइसिंग उथली प्रतिलिपियाँ बनाती है
एक उपयोगी सावधानी: स्लाइसिंग हमेशा नई सूची बनाती है, इसलिए स्लाइस में बदलाव करने से मूल सूची अप्रभावित रहती है। लेकिन यह उथली प्रतिलिपि होती है, इसलिए उसके अंदर की nested सूचियाँ अब भी साझा रहती हैं। इस बात का ध्यान रखें।
original = [1, 2, 3]
copy = original[:] # shallow copy
copy[0] = 99
print(original) # [1, 2, 3] unchanged
# Nested list pitfall
nested = [[1, 2], [3, 4]]
shallow = nested[:]
shallow[0][0] = 99
print(nested) # [[99, 2], [3, 4]] changed!ट्यूपल: अपरिवर्तनीय अनुक्रम
ट्यूपल में कोष्ठक होते हैं और बनने के बाद इसे बदला नहीं जा सकता। हैश करने योग्य होने के कारण यह डिक्शनरी की कुंजी या सेट का सदस्य बन सकता है—ग्रिड समस्याओं में (row, col) युग्मों के लिए बिल्कुल उपयुक्त।
point = (3, 7)
print(point[0]) # 3
# Use as dict key
grid = {}
grid[(0, 0)] = 'start'
grid[(2, 3)] = 'end'
print(grid[(0, 0)]) # start
# Unpacking
x, y = point
print(x, y) # 3 7ट्यूपल और सूची का उपयोग कब करें
जब डेटा को बदलना नहीं होना चाहिए, तब ट्यूपल चुनें; और जब बदलना हो, तब सूची चुनें। ट्यूपल थोड़ी कम मेमोरी भी लेते हैं, जो Dijkstra में बड़े heaps के अंदर काफी महत्वपूर्ण हो जाती है।
import sys
a_list = [1, 2, 3, 4, 5]
a_tuple = (1, 2, 3, 4, 5)
print(sys.getsizeof(a_list)) # e.g. 104 bytes
print(sys.getsizeof(a_tuple)) # e.g. 80 bytes
# Tuple returned from function
def min_max(nums):
return min(nums), max(nums)
lo, hi = min_max([3, 1, 4, 1, 5])
print(lo, hi) # 1 5स्लाइसिंग में एक-की-अधिक त्रुटियाँ
एक-की-अधिक बग ऐरे समस्याओं की सबसे बड़ी अड़चन हैं। याद रखें, lst[i:j] से ठीक j-i आइटम मिलते हैं। बीच में बाँटने के लिए बायाँ भाग lst[:mid] और दायाँ भाग lst[mid:] होता है।
lst = [1, 2, 3, 4, 5, 6]
mid = len(lst) // 2 # 3
left = lst[:mid] # [1, 2, 3]
right = lst[mid:] # [4, 5, 6]
print(left, right)
# How many elements?
print(len(lst[2:5])) # 3 (indices 2,3,4)साक्षात्कारों में ऋणात्मक इंडेक्स
Python में ऋणात्मक इंडेक्स होते हैं: lst[-1] आखिरी आइटम और lst[-2] उससे पहले वाला आइटम देता है। lst[len(lst)-1] की जगह lst[-1] को प्राथमिकता दें—साक्षात्कारकर्ता अधिक साफ़ रूप पर ध्यान देते हैं।
s = 'abcde'
print(s[-1]) # 'e'
print(s[-3:]) # 'cde'
print(s[:-2]) # 'abc' (all except last 2)
nums = [10, 20, 30, 40]
print(nums[-2]) # 30
nums[-1] = 99
print(nums) # [10, 20, 30, 99]सूची को क्रमबद्ध करना और तुलना
Python की क्रमबद्ध प्रक्रिया टिमसॉर्ट (O(n log n), स्थिर) का उपयोग करती है। lst.sort() सूची को उसी स्थान पर बदलता है; sorted(lst) नई सूची लौटाता है। अपनी पसंद का क्रम तय करने के लिए key विकल्प का उपयोग करें। कोड देखें।
words = ['banana', 'fig', 'apple', 'kiwi']
words.sort(key=len)
print(words) # ['fig', 'kiwi', 'apple', 'banana']
nums = [3, 1, 4, 1, 5]
print(sorted(nums, reverse=True)) # [5, 4, 3, 1, 1]
print(nums) # unchanged: [3, 1, 4, 1, 5]पुनरावृत्ति के दौरान सूचियों में बदलाव
एक बहुत सामान्य जाल: सूची पर लूप चलाते समय कभी भी आइटम न जोड़ें या हटाएँ—वरना कुछ elements छूट जाएँगे या प्रोग्राम क्रैश हो जाएगा। इसके बजाय comprehension से नई सूची बनाएँ।
# WRONG — skips elements
nums = [1, 2, 3, 4, 5]
for n in nums:
if n % 2 == 0:
nums.remove(n) # skips 4!
print(nums) # [1, 3, 5]... but 4 got skipped? Actually removes 2,4
# CORRECT — build new list
nums = [1, 2, 3, 4, 5]
nums = [n for n in nums if n % 2 != 0]
print(nums) # [1, 3, 5]लूप में ट्यूपल अनपैकिंग
ट्यूपल अनपैकिंग लूप को साफ़-सुथरा रखती है: enumerate (index, value) देता है और zip दो सूचियों पर एक साथ चलता है। *rest सिंटैक्स बचे हुए हिस्से को अपनी अलग variable में रखता है। कोड देखें।
nums = [10, 20, 30]
for i, v in enumerate(nums):
print(i, v)
# 0 10 / 1 20 / 2 30
a = [1, 2, 3]
b = ['x', 'y', 'z']
for x, y in zip(a, b):
print(x, y)
first, *rest = [1, 2, 3, 4]
print(first, rest) # 1 [2, 3, 4]त्वरित जाँच
त्वरित जाँच—देखें कि Python सूचियों, ट्यूपल और स्लाइसिंग के बारे में आपने कितना सीखा है। आप यह कर सकते हैं। 💪
पाठ का सारांश
सारांश: सूचियाँ O(1) append वाली गतिशील ऐरे होती हैं, स्लाइसिंग हमेशा नई प्रतिलिपि लौटाती है, और ट्यूपल अपरिवर्तनीय तथा हैश करने योग्य होते हैं। आगे: डिक्शनरी और सेट।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “सूचियाँ, टपल और स्लाइसिंग” पाठ निःशुल्क है?
हाँ—“सूचियाँ, टपल और स्लाइसिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और DSA Interview Prep पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। DSA Interview Prep पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“सूचियाँ, टपल और स्लाइसिंग” में मैं क्या सीखूँगा?
व्यावहारिक उदाहरणों के साथ Python सूची-संचालन, स्लाइसिंग सिंटैक्स और टपल की अपरिवर्तनीयता में निपुण बनिए; ये उदाहरण प्रसिद्ध कोडिंग चुनौतियों से लिए गए हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DSA Interview Prep का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या DSA Interview Prep शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DSA Interview Prep शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“सूचियाँ, टपल और स्लाइसिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस DSA Interview Prep पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर DSA Interview Prep पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- सूचियाँ, टपल और स्लाइसिंग
- Python में डिक्शनरी और सेट
- कॉम्प्रिहेंशन और अंतर्निहित सुविधाएँ
- फ़ंक्शन, क्लोज़र और Lambda