פייתון/פייתון גרסה 3/List Comprehension
< פייתון | פייתון גרסה 3
הקדמהעריכה
עד כה למדנו לייצר רשימות באופן ידני או באמצעות לולאת for וכו'.ניתן לייצר רשימות באמצעות List Comprehension.
List Comprehension היא שיטה מקוצרת ליצירת רשימה באופן דומה ליצירתה באמצעות לולאת for. דרך זו מעודפת מפני שקצרה.
דוגמה:
#creat a list with List comprehension:
L2=[0,1,2,3,4]
L3=[i*i for i in L2]
print(L3)
>>>[0, 1, 4, 9, 16]
#creating a list by for:
L=[]
for i in L2:
L.append(i*i)
print(L)
>>>[0, 1, 4, 9, 16]
כפי שניתן לראות יצרנו רשימה Comprehension שמזכירה מאוד את לולאת for רק שהיא מקוצרת בהרבה
שתי רשימותעריכה
ניתן לבצע ההזנה של נעלמים מרשימה אחת או יותר:
L1=[1,2,3]
L2=[5,6,7]
L3=[x*y for x in L1 for y in L2]
print(L3)
[5, 6, 7, 10, 12, 14, 15, 18, 21]
- ניתן באופן דומה ליצר Comprehension עבור מילון וקבוצה.
דוגמאות נוספותעריכה
כמעט כל פקודה הקיימת ב-for ניתן להמירה עבור list comprehension, כמו L[i] וכו'.
שימוש ב-rangeעריכה
L=[]
#creat a list with for:
for x in range(5):
L.append(x*x)
print(L)
>>> [0, 1, 4, 9, 16]
#creat a list with List comprehension:
L_1=[x*x for x in range(5)]
print(L_1)
>>>[0, 1, 4, 9, 16]
שימוש ב-ifעריכה
נבצע פילטר באמצעות if:
L=[1,2,3,4,5]
#creat a list with List comprehension:
L_1=[x*x for x in L if x>=2]
print(L_1)
>>>[4, 9, 16, 25]
if מקונןעריכה
#creat a list with List comprehension:
L_3=[x*2 for x in range(10) if x>3 if x<7]
print(L_3)
>>>[8, 10, 12]
פונקציותעריכה
ניתן לייצר רשימה ולהגדיר על המשתנה פונקציה:
L=['a','b','c']
L1=[]
#creat a list with for:
for x in L:
L1.append(x.upper())
print(L1)
#creating a list with List Comprehension:
L2=[x.upper() for x in L]
print(L2)
>>>['A', 'B', 'C']
>>>['A', 'B', 'C']
יצירת רשימה או רשימת טפילים מקוננתעריכה
יצירת רשימה מקוננת תתבצע באמצעות סוגרים מרובעים או עגולים על שם האיבר ברשימה ה-comprehension:
L=[1,2,3,4]
L1=[[2*x,x] for x in L]
print(L1)
print(L1[0])
print(L1[1])
>>>[[2, 1], [4, 2], [6, 3], [8, 4]]
[2, 1]
[4, 2]
פעולה זו תקפה לרציפים בכלל ובפרט מחרוזות, מילונים ועוד.
משורות לעמודות ולהפךעריכה
באמצעות List Comprehension ניתן לשנות את השורות מעמודות.
row = [[0,1,2],[3,4,5],[6,7,8]]
print(row)
print(row[0])
>>>[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
>>>[0, 1, 2]
col=[[r[i] for r in row] for i in [0, 1, 2]]
print(col)
print(col[0])
>>>[[0, 3, 6], [1, 4, 7], [2, 5, 8]]
>>>[0, 3, 6]