רעננו את הדף והקליקו למעבר לנושא הבא:

List comprehension –רשימה מהירה

List comprehension –רשימה מהירה

קודם הדרך המסורתית ליצירת רשימה –

lista=[ ] for i in range(10): lista.append(i) print(lista)

>>>

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

והדרך המקוצרת list comprehension–

lista=[i for i in range(10)] print (lista)

>>>

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


פשוט מכניסים לתוך סוגריים מרובעים (כך אנו יודעים שמדובר ברשימה) את הנוסחה למה שאנו רוצים שיופיע ברשימה. במקרה שלנו אנו מפעילים את הלולאה for בשילוב עם פקודת range ומבקשים שהרשימה תכלול את מה שיהיה בתוך המשתנה i עבור כל i בטווח שקבענו.

יש לנו שורה אחת במקום 3 ורמת הקריאות היא גבוהה יותר מאשר בפונקציית lambda המסורתית עאלק.

אפשר גם עם פקודת list הלוקחת ישירות מהטווח שמייצרת פקודת range ומייצרת רשימה -

print (list(range(5))

>>>

[0, 1, 2, 3, 4]

ועוד כמה אפשרויות נאות –


lista=[x*x for x in range(1,6)] print (lista)

>>>

[1, 4, 9, 16, 25]

lista=[x*x for x in range(1,11) if x%2!=0] print (lista)

>>>

[1, 9, 25, 49, 81]


למעלה- התוכנית הראשונה מייצרת רשימה של ריבוע כל המספרים מ - 1 עד 5 (לא כולל 6)

התוכנית השנייה כוללת, באותה שורה, גם תנאי (if) ששארית המנה של כל אחד מריבועי המספרים (כשהוא מחולק במספר 2) בטווח (1-10 כולל 10 לא כולל 11) תהיה שונה (!=) מ- 0 – כלומר רק מספרים אי זוגיים. והכל בשורה אחת של קוד (לא מחשיב את שורת print בחשבון הזה) .

Related Posts

See All

תרגיל list comprehension  איתור BMI חריג

תרגיל list comprehension איתור BMI חריג המטרה שלנו היא לכתוב פונקציה, בשורה אחת, המפיקה רשימה של משקלים בין 70-80 ק"ג ורשימה של גבהים ב...