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