דילוג לתוכן המרכזי
מודול 6 · שיעור 4 מתוך 424/36 בקורס~12 min
שיעורי מודול (4/4)

כלים חיוניים

Python חושף שפע של כלי איטרציה: חלקם מובנים (תמיד זמין), אחרים חיים במודול 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), אתה יכול להשתמש ב-zip_longest() מהמודול itertools. בנוסף, אתה יכול להעביר תוצאת zip ישירות אל dict() כדי לבנות באופן מיידי מפת מפתח-ערך.

נסה את זה

פעילות גופנית#python.m6.l4.e1
ניסיונות: 0טוען...

בהינתן הרשימות המקבילות 'מדינות = ['איטליה', 'פרנצ'יה', 'ספאניה']' ו-'בירות = ['רומא', 'פאריג'י', 'מדריד']', בנה את 'מיפוי' כגזרה {מדינה: בירה}. הערכת `מיפוי`.

טוען עורך...
הצג רמז

dict(zip(מדינות, אותיות))

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#python.m6.l4.e2
ניסיונות: 0טוען...

בהינתן `words = ['ciao', 'mondo', 'python']`, בנה `enumerated_items` כרשימה של tuples (i, word) החל מ-i=1. הערך 'פריטים_מצוינים'.

טוען עורך...
הצג רמז

enumerate(מילים, התחל=1) → (i, ערך) tuples.

הפתרון זמין לאחר 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 ניסיונות