الانتقال إلى المحتوى الرئيسي
الوحدة 6 · الدرس 4 من 424/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 يتوقف عند الأقصر القابل للتكرار. لاستخدام الرمز البريدي "الطويل". محمي_INLINE_10.

بناء إملاء من قائمتين متوازيتين:

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']

محمي_INLINE_14

جميع المجموعات (دون التكرار، مستقلة عن النظام) من معين الطول:

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)، فيمكنك استخدام zip_longest() من الوحدة itertools. بالإضافة إلى ذلك، يمكنك تمرير نتيجة zip مباشرةً إلى dict() لإنشاء خريطة قيمة المفتاح على الفور.

جربه

تمرين#python.m6.l4.e1
المحاولات: 0جارٍ التحميل…

بالنظر إلى القوائم المتوازية `البلدان = ['إيطاليا'، و'فرنسا'، و'إسبانيا']` و'العواصم = ['روما'، و'باريجي'، و'مدريد']`، قم ببناء "رسم الخرائط" كأمر إملاء {بلد: رأس المال}. تقييم "رسم الخرائط".

جارٍ تحميل المحرر…
إظهار التلميح

إملاء (الرمز البريدي (البلدان والعواصم))

الحل متاح بعد 3 من المحاولات

تمرين المراجعة

تمرين#python.m6.l4.e2
المحاولات: 0جارٍ التحميل…

بالنظر إلى `words = ['ciao'، 'mondo'، 'python']`، أنشئ `enumerated_items` كقائمة من المجموعات (i، word) بدءًا من i=1. تقييم "العناصر_المعدادة".

جارٍ تحميل المحرر…
إظهار التلميح

تعداد (الكلمات، البدء = 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,value)) وقم بتعيينه إلى my_dict.

الحل متاح بعد 3 من المحاولات