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