top of page

רעננו את הדף והקליקו למעבר לנושא הבא:

enumerate ו-zip – כלים שימושיים ללולאות

  • Feb 4, 2019
  • 2 min read

enumerate ו-zip – כלים שימושיים ללולאות

כשעובדים עם לולאות בפייתון, יש שתי פונקציות מובנות שחוסכות המון קוד ועושות את החיים קלים יותר – enumerate ו-zip. אחרי שמכירים אותן, אי אפשר בלעדיהן.

enumerate – מספור אוטומטי בלולאות

נניח שיש לנו רשימה של פירות ואנחנו רוצים להדפיס כל פרי עם המספר שלו. בלי enumerate היינו צריכים לעשות משהו כזה –

fruits = ["תפוח", "בננה", "תפוז", "אבטיח"] i = 0 for fruit in fruits: print(f"{i}: {fruit}") i += 1

>>>

0: תפוח

1: בננה

2: תפוז

3: אבטיח

זה עובד, אבל המונה i מסרבל את הקוד. עם enumerate נקבל בדיוק את אותה תוצאה בצורה נקייה הרבה יותר –

fruits = ["תפוח", "בננה", "תפוז", "אבטיח"] for i, fruit in enumerate(fruits): print(f"{i}: {fruit}")

>>>

0: תפוח

1: בננה

2: תפוז

3: אבטיח

הפונקציה enumerate עוטפת את הרשימה ומחזירה בכל סיבוב של הלולאה זוג – אינדקס וערך. האינדקס נכנס ל-i והערך נכנס ל-fruit.

אם רוצים שהמספור יתחיל ממספר אחר (למשל מ-1 במקום מ-0) אפשר להעביר פרמטר start –

for i, fruit in enumerate(fruits, start=1): print(f"{i}. {fruit}")

>>>

1. תפוח

2. בננה

3. תפוז

4. אבטיח

zip – לולאה מקבילת על כמה רשימות

נניח שיש לנו שתי רשימות – שמות תלמידים והציונים שלהם – ואנחנו רוצים להדפיס כל תלמיד עם הציון שלו. בלי zip היינו צריכים לעבוד עם אינדקסים –

names = ["דנא", "יוסי", "מיכל"] grades = [92, 85, 97] for i in range(len(names)): print(f"{names[i]} קיבל/ה {grades[i]}")

>>>

דנא קיבל/ה 92

יוסי קיבל/ה 85

מיכל קיבל/ה 97

עם zip זה הרבה יותר אלגנטי –

names = ["דנא", "יוסי", "מיכל"] grades = [92, 85, 97] for name, grade in zip(names, grades): print(f"{name} קיבל/ה {grade}")

>>>

דנא קיבל/ה 92

יוסי קיבל/ה 85

מיכל קיבל/ה 97

הפונקציה zip לוקחת שתי רשימות (או יותר) וצועדת עליהן במקביל – בכל סיבוב של הלולאה היא שולפת איבר אחד מכל רשימה ונותנת אותם יחד.

אפשר לעשות zip גם על שלוש רשימות ויותר –

names = ["דנא", "יוסי", "מיכל"] grades = [92, 85, 97] cities = ["תל אביב", "חיפה", "ירושלים"] for name, grade, city in zip(names, grades, cities): print(f"{name} מ{city} – ציון {grade}")

>>>

דנא מתל אביב – ציון 92

יוסי מחיפה – ציון 85

מיכל מירושלים – ציון 97

חשוב לדעת – אם הרשימות לא באותו אורך, zip עוצרת כשהרשימה הקצרה ביותר נגמרת –

a = [1, 2, 3, 4, 5]

b = ["א", "ב", "ג"]

print(list(zip(a, b)))

>>>

[(1, "א"), (2, "ב"), (3, "ג")]

שילוב enumerate ו-zip – אפשר גם לשלב את שתי הפונקציות ביחד כשרוצים גם מספור וגם מעבר מקבילי –

names = ["דנא", "יוסי", "מיכל"] grades = [92, 85, 97] for i, (name, grade) in enumerate(zip(names, grades), start=1): print(f"{i}. {name}: {grade}")

>>>

1. דנא: 92

2. יוסי: 85

3. מיכל: 97

שימוש מעשי – יצירת מילון מזוגות של רשימות –

keys = ["name", "age", "city"]

values = ["Eddie", 40, "Tel Aviv"]

d = dict(zip(keys, values))

print(d)

>>>

{'name': 'Eddie', 'age': 40, 'city': 'Tel Aviv'}

לסיכום – enumerate חוסכת את הצורך לנהל מונה ידני כשרוצים לדעת את האינדקס בלולאה, ו-zip מאפשרת לעבור על כמה רשימות במקביל בלי להתעסק עם אינדקסים. שתי הפונקציות האלה הופכות את הקוד לנקי וקריא יותר, ומומלץ להשתמש בהן בכל הזדמנות.

 
 
 

Related Posts

See All
תוכן הקורס

לחץ למעבר לשיעור תוכן עניינים מבוא הורדה והתקנת התוכנה על גבי המחשב שלכם חלק ראשון - יסודות פקודת print מחרוזות - גרשיים (") או גרש (') פעולות מתמטיות בסיסיות סוגי מספרים - integer

 
 
 
מבוא

הרקע של פייתון - שפת התכנות פייתון (python) פותחה על ידי הולנדי בשם Guido van Rossum ונקראה בהומור על שם חבורות הקומיקאים הבריטית מונטי-פייתון, כאשר משמעות המילה פייתון כשלעצמה היא נחש חנק מסוג פיתון,

 
 
 
הורדה והתקנת פייתון על גבי המחשב שלכם

פייתון קיימת במערכות הפעלה של אפל ולינוקס ולא צריך להתקין אותה באופן מיוחד. לעומת זאת, במערכת ההפעלה של windows דרושה התקנה כפי שיפורט להלן. התוכנה, גם ל- windows, היא תוכנה חינמית וניתנת להורדה באתר

 
 
 

Comments


Single Post: Blog_Single_Post_Widget
bottom of page