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

February 28, 2019

 

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 בחשבון הזה) .

Please reload

Please reload

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