ماڈیول اسباق (4/4)
ضروری ایٹرٹولز
ازگر نے تکرار کے بہت سارے ٹولز کو بے نقاب کیا: کچھ بلٹ ان ہوتے ہیں (ہمیشہ
دستیاب ہے)، دوسرے معیار کے itertools ماڈیول میں رہتے ہیں۔
لائبریری یہاں سب سے اہم ہیں.
enumerate: اشاریہ + قدر
جب آپ کو لوپ کے دوران انڈیکس اور عنصر دونوں کی ضرورت ہو:
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: متوازی طور پر اعادہ کریں۔
عنصر کے لحاظ سے متعدد تکراری عنصر کو جوڑتا ہے:
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
دو متوازی فہرستوں سے ایک ڈکٹ بنانا:
dict(zip(nomi, eta))
# {'Ada': 36, 'Linus': 54, 'Grace': 85}itertools.chain: جوڑنا تکرار کرنا
from itertools import chain
list(chain([1, 2], [3, 4], [5]))
# [1, 2, 3, 4, 5]درمیانی فہرست بنائے بغیر: فائلوں، جنریٹرز وغیرہ کے لیے مفید۔
itertools.count اور repeat: لامحدود تکرار کرنے والے
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
دیے گئے تمام مجموعے (بغیر تکرار کے، ترتیب سے آزاد) لمبائی:
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() کو پاس کر سکتے ہیں۔
اسے آزمائیں
متوازی فہرستوں کو دیکھتے ہوئے `countries = ['Italia', 'Francia', 'Spagna']` اور `capitals = ['Roma', 'Parigi', 'Madrid']`, `mapping` کو ایک dict {country: capital} کے طور پر بنائیں۔ `میپنگ` کا اندازہ لگائیں۔
اشارہ دکھائیں۔
dict(zip(ممالک، دارالحکومتیں))
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
`الفاظ = ['ciao', 'mondo', 'python']` دیے ہوئے، i=1 سے شروع ہونے والے tuples (i, word) کی فہرست کے طور پر `enumerated_items` بنائیں۔ 'شمار کردہ_آئٹمز' کا اندازہ کریں۔
اشارہ دکھائیں۔
شمار کریں(الفاظ، آغاز=1) → (i، قدر) ٹیپلز۔
3 کوششوں کے بعد حل دستیاب ہے۔
اضافی چیلنج
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 کوششوں کے بعد حل دستیاب ہے۔