مرکزی مواد پر جائیں
ماڈیول 6 · سبق 4 از 4کورس میں 24/36~12 min
ماڈیول اسباق (4/4)

ضروری ایٹرٹولز

ازگر نے تکرار کے بہت سارے ٹولز کو بے نقاب کیا: کچھ بلٹ ان ہوتے ہیں (ہمیشہ دستیاب ہے)، دوسرے معیار کے 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() لغات اور غیر متوازن تکرار کے لیے

zip() فنکشن جیسے ہی مختصر ترین ان پٹ اٹیبل ختم ہو جاتا ہے رک جاتا ہے۔ اگر آپ عناصر کو جوڑنا چاہتے ہیں اور کوئی اضافی قدریں رکھنا چاہتے ہیں (ان کو ڈیفالٹ ویلیو جیسے None سے بھرنا)، تو آپ itertools ماڈیول سے zip_longest() استعمال کر سکتے ہیں۔ اس کے علاوہ، آپ فوری طور پر کلیدی قدر کا نقشہ بنانے کے لیے zip نتیجہ براہ راست dict() کو پاس کر سکتے ہیں۔

اسے آزمائیں

ورزش#python.m6.l4.e1
کوششیں: 0لوڈ ہو رہا ہے…

متوازی فہرستوں کو دیکھتے ہوئے `countries = ['Italia', 'Francia', 'Spagna']` اور `capitals = ['Roma', 'Parigi', 'Madrid']`, `mapping` کو ایک dict {country: capital} کے طور پر بنائیں۔ `میپنگ` کا اندازہ لگائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

dict(zip(ممالک، دارالحکومتیں))

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#python.m6.l4.e2
کوششیں: 0لوڈ ہو رہا ہے…

`الفاظ = ['ciao', 'mondo', 'python']` دیے ہوئے، i=1 سے شروع ہونے والے tuples (i, word) کی فہرست کے طور پر `enumerated_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.

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

dict(zip(keys, values)) کا استعمال کریں اور اسے my_dict کو تفویض کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔