פייתון/פייתון גרסה 3/List Comprehension

הקדמהעריכה

עד כה למדנו לייצר רשימות באופן ידני או באמצעות לולאת 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]