שיעורי מודול (4/4)
כלים חיוניים
Python חושף שפע של כלי איטרציה: חלקם מובנים (תמיד
זמין), אחרים חיים במודול 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), אתה יכול להשתמש ב-zip_longest() מהמודול itertools. בנוסף, אתה יכול להעביר תוצאת zip ישירות אל dict() כדי לבנות באופן מיידי מפת מפתח-ערך.
נסה את זה
בהינתן הרשימות המקבילות 'מדינות = ['איטליה', 'פרנצ'יה', 'ספאניה']' ו-'בירות = ['רומא', 'פאריג'י', 'מדריד']', בנה את 'מיפוי' כגזרה {מדינה: בירה}. הערכת `מיפוי`.
הצג רמז
dict(zip(מדינות, אותיות))
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
בהינתן `words = ['ciao', 'mondo', 'python']`, בנה `enumerated_items` כרשימה של tuples (i, word) החל מ-i=1. הערך 'פריטים_מצוינים'.
הצג רמז
enumerate(מילים, התחל=1) → (i, ערך) tuples.
הפתרון זמין לאחר 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 ניסיונות