סינון רשימות
ניתן להרחיב את יכולתה של פייתון למיפוי על ידי הכללת רשימות,
ולשלב בה מנגנון סינון, בעזרתו חלק מהאברים ברשימה ממופים בעוד על חלק
אחר אנו מדלגים.
תחביר של סינון רשימות:
[mapping.expression for
element
in
source.list
if
filter.expression]
זוהי כאמור הרחבה של מנגנון הכללת הרשימות. החלק השמאלי והמרכזי
נשאר אותו הדבר, בעוד השאר, החל מהמילה –
if, הוא הביטוי המסנן. ביטוי מסנן
יכול להיות כל ביטוי בוליאני
(שבפייתון יכול להיות כמעט כל
דבר). כל אלמנט עבורו הביטוי המסנן הנו אמיתי יהיה כלול במיפוי, ואילו
השאר יושמטו.
>>> li = ["a", "mpilgrim", "foo", "b", "c",
"b", "d", "d"]
>>>
[elem for
elem
in
li
if
len(elem) >
1] ['mpilgrim',
'foo']
>>>
[elem for
elem
in
li
if
elem != "b"]
['a',
'mpilgrim', 'foo', 'c', 'd', 'd']
>>>
[elem for
elem
in
li
if
li.count(elem)
== 1] ['a',
'mpilgrim', 'foo', 'c']
העבירו את
הסמן מעל השורות המסומנות לקבלת הסברים
הביטוי הממפה כאן פשוט (הוא מחזיר את ערכו של הביטוי המקורי
שהוא מקבל). וכך נוכל להתמקד בביטוי המסנן. בעוד פייתון מבצע לולאה
על גבי הרשימה, מועבר כל אלמנט דרך ביטוי הפילטר. אם הביטוי המסנן
אמיתי, האלמנט ממופה ותוצאת המיפוי נכללת ברשימה המוחזרת. בדוגמה הזו
אנו מסננים את כל המחרוזות שהן בנות תו אחד בלבד, וכך הרשימה המוחזרת
מכילה אך ורק מחרוזות בנות שני תוים ויותר.
במקרה זה אנו מסננים ער מסוים – b. שימ/י לב שכל הביטויים שערכם b מסוננים, ולא רק הראשון.
count היא מתודה של רשימות, המחזירה את מספר הפעמים שהערך
הנתון מופיע ברשימה. בדוגמה אנחנו משאירים ברשימה המוחזרת רק את
הערכים שמופיעים פעם אחת בלבד ברשימה המקורית.
|