מיפוי רשימות
אחת מהתכונות
החזקות ביותר בשפת פייתון היא היכולת "להכליל" רשימות (הסבר להלן...)
שמאפשרת לבצע מיפוי של רשימות בצורה קומפקטית ואלגנטית על ידי החלת פונקציה
כלשהי על כל אחד מאברי
הרשימה.
זה מתבצע תוך
שימוש בתבנית for ... in כך (את לולאת for בשימושה
הרגיל נכיר נכיר בהמשך):
>>> li = [1, 9, 8, 4]
>>>
[elem*2 for
elem
in
li]
[2, 18, 16,
8] >>>
li [1, 9, 8,
4]
>>> li =
[elem*2 for
elem
in
li]
>>>
li [2, 18, 16,
8]
העבירו את
הסמן מעל השורות המסומנות לקבלת הסברים
כדוברי עברית, נבחן
את הביטוי בתוך הסוגריים המרובעים, מימין לשמאל. Li היא המחרוזת אותה אנו רוצים למפות.
פייתון רץ בלולאה על אברי li, ומציב באופן
זמני בכל איטרציה את ערך האיבר הנכחי במשתנה elem. לאחר מכן הביטוי משמאל מחושב וערכו מוסף לרשימה
אחרת, היא הרשימה שמוחזרת בסופו של דבר.
יש לשים לב שפעולת הכללת הרשימה אינה משנה את הרשימה
המקורית.
ניתן להציב את התוצאה (הרשימה המוחזרת) במשתנה
המקורי.
לפני שנמשיך לבחון את היכולות של הכללת הרשימות, נחזור מעט
אחורה, לנושא המילונים. לאחר שלמדנו על הרשומות והרשימות, נכיר כעת
שלוש מתודות חדשות של טיפוס המילון, שעושות שימוש בטיפוסי נתונים
אלו:
>>> params = {"server":"mpilgrim",
"database":"master", "uid":"sa", "pwd":"secret"} >>> params.keys() ['server',
'uid', 'database', 'pwd'] >>>
params.values() ['mpilgrim',
'sa', 'master', 'secret'] >>>
params.items() [('server',
'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd',
'secret')]
העבירו את
הסמן מעל השורות המסומנות לקבלת הסברים
המתודה
keys של המילון
מחזירה רשימה של כל המפתחות במילון. כזכור, המילון אינו מבנה נתונים
סדור, ולפיכך סדר הרשימה אינו משמעותי.
המתודה values מחזירה רשימה של
כל הערכים במילון. גם כאן סדר הרשימה אינו משמעותי, אך זהו אותו הסדר
שמוחזר על ידי keys.
ולבסוף, המתודה items מחזירה רשימה של רשומות מהצורה (key,
value). רשימה זו מכילה את כל המידע במילון.
["%s=%s" % (k, v) for
k, v
in
params.items()]
מה מחזיר הביטוי? Params הוא מילון. הביטוי
לוקח את רשימת התוכן של המילון – params.items(), וממפה אותה לרשימה חדשה על ידי החלת
תבנית המחרוזת על כל אחד מהאלמנטים (הרשומות). הרשימה החדשה תכיל את
אותו מספר האלמנטים כמו הרשימה המקורית, אך במקום רשומות תופענה ברשימה
החדשה מחרוזות שתכלנה את המפתח ואת הערך שהכילה הרשומה
המתאימה.
זה יהיה, אם כן, הפלט של הביטוי:
['server=mpilgrim', 'uid=sa',
'database=master', 'pwd=secret']
|