Python תומך באובייקטים רבים שניתנים לחזרה: רשימות, tuples ומיתרים הם רק כמה. הלולאה של Python גמישה מספיק כדי לטפל באובייקטים אלה בקלות. במיוחד, זה חוסך ממך להתמודד עם האינדקס המספרי של כל ערך בעצמך.
אבל לפעמים, תרצה לעבוד עם אינדקס, לספור או לסנן פריטים באוסף למשל. למד כיצד אתה יכול להשתמש בפונקציית ה-Python enumerate כדי לחזור על רצף תוך מעקב אחר האינדקס והאלמנט.
איטרציה ללא ספירה()
שקול את רשימת הפייתונים הבאה.
my_fruits = ["תפוחים", "אגסים", "בננות"]
נניח שאתה רוצה לעקוב אחר הספירה של כל רכיב ברשימה. אתה יכול השתמש בלולאת for עם טווח() לתפקד ככה.
לספור = 0
ל פרי ב טווח (len (my_fruits)):
print (ספירה, שלי_פירות[ספירה])
לספור += 1
אמנם זה עובד, אבל יש לו כמה חסרונות:
- אתה צריך לעקוב אחר הספירה מחוץ ללולאה.
- אתה צריך להגדיל את הספירה בכל איטרציה.
- אתה צריך לחשב את אורך הלולאה.
- טווח (len()) עובד רק עם אובייקטים הניתנים לספירה, הניתנים לאינדקס.
קיים פתרון טוב יותר: הפונקציה enumerate() .
כיצד enumerate() עובד ב-Python
הפייתון לִמְנוֹת() הפונקציה לוקחת אוסף נתונים ומחזירה אובייקט ספירה. האובייקט המונה מכיל מונה כמפתח לכל פריט שהאובייקט מכיל. ה
לִמְנוֹת() הפונקציה עושה זאת על ידי הקצאת ספירה לכל פריט. ספירה זו מתאימה למספר האיטרציות שהפונקציה השלימה כדי להגיע לערך זה.מונה זה מקל על הגישה לפריטים באוסף או אפילו לשנות את האוסף במידת האפשר.
עם לִמְנוֹת(), אינך צריך לעקוב אחר אורך הלולאה או ספירת האיטרציות. אתה יכול גם להימנע מגישה מפורשת לערך באמצעות אופרטור האינדקס, כמו פירות[ספירה]. פונקציית ה-enumerate מטפלת אוטומטית בכל התכונות הללו.
התחביר של Python enumerate()
להלן התחביר הכללי של הפונקציה enumerate() .
enumerate (איטרבל, התחל=0)
enumerate() לוקח שני ארגומנטים:
- iterable: אוסף נתונים או רצף ש-Python יכול לחזור עליהם. לְמָשָׁל. רשימה או טופלה.
- start: האינדקס שממנו אמורה הפונקציה לספור להתחיל לספור.
כיצד enumerate() מיושם
כדי להבין איך לִמְנוֹת() עובד, בוא נראה איך זה מיושם בפועל.
defלִמְנוֹת(רצף, התחל=0):
n = התחלה
ל עלם ב סדר פעולות:
תְשׁוּאָה נ, עלם
n += 1
פונקציה זו, שתוכל למצוא ב- תיעוד ספירת פייתון, לוקח רצף וארגומנט התחלה שברירת המחדל הוא 0.
לאחר מכן הפונקציה מאתחלת את המשתנה n למשתנה ההתחלה. זה עוקב אחר מספר האיטרציות.
בלולאת for שלאחר מכן עבור כל אלמנט ברצף,
- תְשׁוּאָה משהה את ביצוע הלולאה.
- זה גם מחזיר את הספירה הנוכחית (n), ואת הערך (elem).
- כאשר הלולאה מתחדשת, היא מגדילה את n.
ערך ההחזרה הוא אובייקט של צמדי מפתח-ערך.
אם היית מתקשר ל לִמְנוֹת() פונקציה ותעביר לה את רשימת הפירות, זה יהיה ערך הפלט.
my_fruits = ["תפוחים", "אגסים", "בננות"]
enumerate_object = enumerate (my_fruits)
הדפס (רשימה (enumerate_object))
# פלט - [(0, 'תפוחים'), (1, 'אגסים'), (2, 'בננות')]
מנה עם אינדקס התחלה שונה
בדוגמה לעיל, לא ציינו את המדד ההתחלתי. הדוגמה שלהלן מראה לך איך אתה יכול להגדיר את האינדקס ההתחלתי למספר לפי בחירתך.
כדי להתחיל ב-10, בצע את הפעולות הבאות.
enumerate_object = enumerate (my_fruits, 10)
הדפס (רשימה (enumerate_object))
# פלט - [(10, 'תפוחים'), (11, 'אגסים'), (12, 'בננות')]
Python enumerate() דוגמאות
הנה כמה דוגמאות המראות כיצד אתה יכול להשתמש לִמְנוֹת() בפייתון.
מנה מחרוזת Python
בדוגמה זו, תשתמש ב-enumerate כדי לאחזר את האות באינדקס 5:
my_string = "makeuseof"
ל ספירה, ערך ב enumerate (my_string):
אם לספור == 5:
הדפס (ערך)
# פלט - s
מנה פייתון Tuple
אתה יכול גם להשתמש לִמְנוֹת() לחזור על א פייתון tuple. בדוגמה זו, התוכנה מדפיסה כותרת באיטרציה הראשונה, לפני הצגת הפריטים.
my_fruits_tuple = ("תפוחים", "אגסים", "בננות")
ל אינדקס, ערך ב מנה (שלי_פירות_טופל):
אם (אינדקס == 0):
print("פירות:")הדפס (ערך)
/*
פירות:
תפוחים
אגסים
בננות
*/
מנה רשימת פייתונים
בדוגמה למטה, אתה משתמש ב-enumerate כדי להקטין את כל המספרים ברשימה מעל 10 ב-2.
רשימת_המספר_ שלי = [10, 17, 15, 6]
ל אינדקס, ערך ב מנה (שלי_המספר_רשימה):
אם (ערך > 10):
שלי_מספר_הרשימה[אינדקס] -= 2הדפס (הרשימה_המספר_שלי)
פלט אחד - [10, 15, 13, 6]
השתמש ב-enumerate כדי לספור את החזרות שלך
פייתון כולל לִמְנוֹת() כפונקציה מובנית. אתה יכול להשתמש בו כדי לחזור ולספור פריטים באוסף שניתן לחזור עליו כגון רשימה, tuple או מחרוזת. זה יכול לעזור לך לעקוב אחר האינדקס האמיתי של כל אלמנט, אבל אתה יכול גם לציין אינדקס התחלתי משלך. השתמש בו כחלופה ל טווח() פונקציה אם אתה עובד עם אובייקטים שאינם אובייקטים ניתנים לספירה ואובייקטים הניתנים לאינדקס.