دروس الوحدة (4/4)
أدوات itertools الأساسية
تعرض بايثون الكثير من أدوات التكرار: بعضها مدمج (دائمًا
متاح)، والبعض الآخر يعيش في وحدة 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 يتوقف عند الأقصر القابل للتكرار. لاستخدام الرمز البريدي "الطويل".
محمي_INLINE_10.
بناء إملاء من قائمتين متوازيتين:
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']محمي_INLINE_14
جميع المجموعات (دون التكرار، مستقلة عن النظام) من معين الطول:
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)، فيمكنك استخدام zip_longest() من الوحدة itertools. بالإضافة إلى ذلك، يمكنك تمرير نتيجة zip مباشرةً إلى dict() لإنشاء خريطة قيمة المفتاح على الفور.
جربه
بالنظر إلى القوائم المتوازية `البلدان = ['إيطاليا'، و'فرنسا'، و'إسبانيا']` و'العواصم = ['روما'، و'باريجي'، و'مدريد']`، قم ببناء "رسم الخرائط" كأمر إملاء {بلد: رأس المال}. تقييم "رسم الخرائط".
إظهار التلميح
إملاء (الرمز البريدي (البلدان والعواصم))
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
بالنظر إلى `words = ['ciao'، 'mondo'، 'python']`، أنشئ `enumerated_items` كقائمة من المجموعات (i، word) بدءًا من i=1. تقييم "العناصر_المعدادة".
إظهار التلميح
تعداد (الكلمات، البدء = 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,value)) وقم بتعيينه إلى my_dict.
الحل متاح بعد 3 من المحاولات