שיעורי מודול (1/4)
הבנת רשימה
הבנת רשימה היא ביטוי שבונה רשימה על ידי יישום
טרנספורמציה (ואופציונלית מסנן) לחזרה. זה ה
דרך פייתונית לכתוב for + append בשורה אחת.
# stile imperativo (verboso)
quadrati = []
for n in range(5):
quadrati.append(n * n)
# stile pythonico
quadrati = [n * n for n in range(5)]
# [0, 1, 4, 9, 16]תחביר מלא
[espressione for elemento in iterabile if condizione]- ביטוי: מה להכניס לרשימה המתקבלת
- עבור אלמנט ב-Iterable: לולאת מקור
- אם תנאי (אופציונלי): שומר רק על הרכיבים התואמים
pari = [n for n in range(10) if n % 2 == 0]
# [0, 2, 4, 6, 8]
maiuscole = [p.upper() for p in ["ciao", "mondo"]]
# ['CIAO', 'MONDO']
lunghe = [p for p in ["a", "bb", "ccc", "dddd"] if len(p) >= 3]
# ['ccc', 'dddd']אם/אחר בתוך הביטוי (שלישי)
כדי לשנות באופן מותנה (ולא לסנן), השתמשו בטרנרי
ביטוי לפני ה-for:
[n if n > 0 else 0 for n in [-2, -1, 0, 1, 2]]
# [0, 0, 0, 1, 2]רב עבור: מוצר קרטזי
אתה יכול לקנן מספר סעיפים for:
coppie = [(x, y) for x in range(3) for y in range(2)]
# [(0,0), (0,1), (1,0), (1,1), (2,0), (2,1)]סדר הסעיפים for הוא "חיצוני-לפני-פנימי", כאילו היו
לולאות מקוננות.
מתי לא להשתמש בהבנה
- לוגיקה מורכבת עם הרבה ענפים מקוננים
if/else→ השתמש בלולאה מפורשת. - תופעות לוואי (הדפסה, כתיבה של קובץ) ← לולאה, לא הבנה.
- יותר מ-2 רמות מקוננות → לולאה בעלת שם מפורש היא כמעט תמיד טובה יותר.
הבנת הרשימה המקוננת
אתה יכול לשרשר מספר לולאות for בתוך הבנת רשימה אחת. לדוגמה, כדי לשטח מטריצה (רשימה של רשימות) לרשימה שטוחה אחת, אתה יכול לכתוב:
matrix = [[1, 2], [3, 4]]
flat = [item for row in matrix for item in row]
# result: [1, 2, 3, 4]סדר הלולאות משקף בדיוק את סדר הקינון של לולאות for מסורתיות.
נסה את זה
בהינתן `מספרים = [1, 2, 3, 4, 5, 6]`, בנה `ריבועים זוגיים` עם הריבועים של המספרים הזוגיים בלבד. הערך את 'ריבועים_שווים'.
הצג רמז
אם n % 2 == 0 בסוף.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
בהינתן `words = ['Ciao', 'Mondo', 'Python', 'Java']`, בנה `אורכים` באורך של כל מילה ו-`short_words` עם המילים קצרות מ-5 תווים בלבד. הערך את `(אורך, מילים קצרות)`.
הצג רמז
שתי הבנות נפרדות.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
Use a list comprehension to calculate the squares of only the even integers between 1 and 10 inclusive. Store the list in `even_squares` and evaluate it.
הצג רמז
השתמש ב-range(1, 11) כדי לחזור, אם x % 2 == 0 כדי לסנן, ו-x**2 כביטוי.
הפתרון זמין לאחר 3 ניסיונות