פייתון/פייתון גרסה 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]