मुख्य सामग्री पर जाएं
मॉड्यूल 6 · पाठ 1 का 4पाठ्यक्रम में 21/36~12 min
मॉड्यूल पाठ (1/4)

सूची समझ

सूची समझ एक अभिव्यक्ति है जो लागू करके एक सूची बनाती है एक पुनरावर्तनीय में परिवर्तन (और वैकल्पिक रूप से एक फ़िल्टर)। यह है एक पंक्ति में for + append लिखने का पायथोनिक तरीका।

Python
# stile imperativo (verboso)
quadrati = []
for n in range(5):
    quadrati.append(n * n)

# stile pythonico
quadrati = [n * n for n in range(5)]
# [0, 1, 4, 9, 16]

पूर्ण वाक्यविन्यास

Python
[espressione for elemento in iterabile if condizione]
  • अभिव्यक्ति: परिणामी सूची में क्या डाला जाए
  • पुनरावर्तनीय में तत्व के लिए: स्रोत लूप
  • यदि शर्त (वैकल्पिक): केवल मेल खाने वाले तत्वों को रखता है
Python
pari = [n for n in range(10) if n % 2 == 0]
# [0, 2, 4, 6, 8]

maiuscole = [p.upper() for p in ["ciao", "mondo"]]
# ['CIAO', 'MONDO']

lunghe = [p for p in ["a", "bb", "ccc", "dddd"] if len(p) >= 3]
# ['ccc', 'dddd']

यदि/अन्यथा अभिव्यक्ति के अंदर (टर्नरी)

सशर्त रूप से रूपांतरित करने के लिए (फ़िल्टर के बजाय), टर्नरी का उपयोग करें for से पहले अभिव्यक्ति:

Python
[n if n > 0 else 0 for n in [-2, -1, 0, 1, 2]]
# [0, 0, 0, 1, 2]

मल्टी-फॉर: कार्टेशियन उत्पाद

आप एकाधिक for क्लॉज को नेस्ट कर सकते हैं:

Python
coppie = [(x, y) for x in range(3) for y in range(2)]
# [(0,0), (0,1), (1,0), (1,1), (2,0), (2,1)]

for खंडों का क्रम "बाहरी-पहले-आंतरिक" है, जैसे कि वे थे नेस्टेड लूप.

समझ का उपयोग कब नहीं करना चाहिए

  • कई नेस्टेड if/else शाखाओं के साथ जटिल तर्क → एक स्पष्ट लूप का उपयोग करें।
  • दुष्प्रभाव (प्रिंट, फ़ाइल लिखना) → लूप, समझ नहीं।
  • 2 से अधिक नेस्टेड स्तर → एक स्पष्ट नामित लूप लगभग हमेशा बेहतर होता है।

नेस्टेड सूची समझ

आप एक ही सूची समझ के अंदर एकाधिक for लूप को श्रृंखलाबद्ध कर सकते हैं। उदाहरण के लिए, किसी मैट्रिक्स (सूचियों की सूची) को एक समतल सूची में समतल करने के लिए, आप लिख सकते हैं:

Python
matrix = [[1, 2], [3, 4]]
flat = [item for row in matrix for item in row]
# result: [1, 2, 3, 4]

लूपों का क्रम बिल्कुल पारंपरिक for लूप्स के नेस्टिंग क्रम को प्रतिबिंबित करता है।

इसे अजमाएं

व्यायाम#python.m6.l1.e1
प्रयास: 0लोड हो रहा है...

`संख्याएँ = [1, 2, 3, 4, 5, 6]` दिए जाने पर, केवल सम संख्याओं के वर्गों से `सम_वर्ग` बनाएँ। `सम_वर्ग` का मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

यदि n % 2 == 0 अंत में।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#python.m6.l1.e2
प्रयास: 0लोड हो रहा है...

दिए गए `शब्द = ['सियाओ', 'मोंडो', 'पायथन', 'जावा']`, प्रत्येक शब्द की लंबाई के साथ `लंबाई` बनाएं, और केवल 5 अक्षरों से छोटे शब्दों के साथ `short_words` बनाएं। `(लंबाई, छोटे_शब्द)` का मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

दो अलग-अलग समझ.

3 प्रयासों के बाद समाधान उपलब्ध है

अतिरिक्त चुनौती

व्यायाम#python.m6.l1.e3
प्रयास: 0लोड हो रहा है...

Use a list comprehension to calculate the squares of only the even integers between 1 and 10 inclusive. Store the list in `even_squares` and evaluate it.

संपादक लोड हो रहा है...
संकेत दिखाएँ

पुनरावृत्त करने के लिए श्रेणी (1, 11) का उपयोग करें, यदि फ़िल्टर करने के लिए x % 2 == 0, और अभिव्यक्ति के रूप में x**2 का उपयोग करें।

3 प्रयासों के बाद समाधान उपलब्ध है