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

आवश्यक itertools

पायथन बहुत सारे पुनरावृत्ति उपकरण उजागर करता है: कुछ अंतर्निहित (हमेशा) होते हैं उपलब्ध), अन्य मानक के itertools मॉड्यूल में रहते हैं पुस्तकालय. यहां सबसे महत्वपूर्ण हैं.

enumerate: सूचकांक + मान

जब आपको लूप के दौरान इंडेक्स और तत्व दोनों की आवश्यकता होती है:

Python
for i, parola in enumerate(["a", "b", "c"]):
    print(i, parola)
# 0 a
# 1 b
# 2 c

# parte da un altro numero:
for i, parola in enumerate(["a", "b", "c"], start=1):
    print(i, parola)

zip: समानांतर में पुनरावृत्त करें

एकाधिक पुनरावर्तनीय तत्वों को तत्व दर तत्व संयोजित करता है:

Python
nomi = ["Ada", "Linus", "Grace"]
eta = [36, 54, 85]

for n, e in zip(nomi, eta):
    print(f"{n} ha {e} anni")

zip पुनरावर्तनीय सबसे कम पर रुकता है। "लंबे" ज़िप उपयोग के लिए itertools.zip_longest.

दो समानांतर सूचियों से एक निर्देश बनाना:

Python
dict(zip(nomi, eta))
# {'Ada': 36, 'Linus': 54, 'Grace': 85}

itertools.chain: पुनरावृत्तों को संयोजित करें

Python
from itertools import chain
list(chain([1, 2], [3, 4], [5]))
# [1, 2, 3, 4, 5]

मध्यवर्ती सूची बनाए बिना: फ़ाइलों, जेनरेटर आदि के लिए उपयोगी।

itertools.count और repeat: अनंत पुनरावर्तक

Python
from itertools import count, repeat

# count(start, step) — interi crescenti infiniti
for i in count(10, 2):
    if i > 20: break
    print(i)
# 10, 12, 14, 16, 18, 20

# repeat(x, n) — ripete lo stesso valore n volte (o all'infinito senza n)
list(repeat("ok", 3))   # ['ok', 'ok', 'ok']

itertools.combinations

किसी दिए गए सभी संयोजन (दोहराव के बिना, क्रम-स्वतंत्र)। लंबाई:

Python
from itertools import combinations
list(combinations([1, 2, 3, 4], 2))
# [(1,2), (1,3), (1,4), (2,3), (2,4), (3,4)]

ऑर्डर किया गया संस्करण: permutations। दोहराव वाले वेरिएंट: combinations_with_replacement और product।

शब्दकोशों और असंतुलित पुनरावृत्तियों के लिए ज़िप()

जैसे ही सबसे छोटा इनपुट पुनरावर्तनीय समाप्त हो जाता है, zip() फ़ंक्शन बंद हो जाता है। यदि आप तत्वों को जोड़ना चाहते हैं और कोई अतिरिक्त मान रखना चाहते हैं (उन्हें None जैसे डिफ़ॉल्ट मान से भरना), तो आप itertools मॉड्यूल से zip_longest() का उपयोग कर सकते हैं। इसके अतिरिक्त, आप तुरंत कुंजी-मूल्य मानचित्र बनाने के लिए zip परिणाम को सीधे dict() पर भेज सकते हैं।

इसे अजमाएं

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

समानांतर सूचियों `देश = ['इटालिया', 'फ्रांसिया', 'स्पैगना']` और `राजधानियाँ = ['रोमा', 'परिगी', 'मैड्रिड']` को देखते हुए, `मैपिंग` को एक तानाशाही {देश: राजधानी} के रूप में बनाएं। 'मैपिंग' का मूल्यांकन करें.

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

तानाशाही(ज़िप(देश, राजधानियाँ))

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

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

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

दिए गए `शब्द = ['सियाओ', 'मोंडो', 'पायथन']`, i=1 से शुरू होने वाले टुपल्स (i, शब्द) की एक सूची के रूप में `enumerat_items` बनाएं। `एन्यूमरेटेड_आइटम` का मूल्यांकन करें।

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

गणना करें(शब्द, प्रारंभ=1) → (i, मान) टुपल्स।

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

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

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

Given two lists `keys = ['a', 'b', 'c']` and `values = [10, 20, 30]`, use `zip` to pair them and convert the result into a dictionary. Store the resulting dictionary in `my_dict` and evaluate it.

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

तानाशाही (ज़िप (कुंजियाँ, मान)) का उपयोग करें और इसे my_dict पर असाइन करें।

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