השתמש בפונקציה Enumerate ב- Python ליצירת לולאות עם מונים

Use Enumerate Function Python Create Loops With Counters



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

תחביר ודוגמא בסיסית

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







ל (intאני= 0;אני< 10;אני++)

{

printf ('%ד n',אני);

}

משפט הלולאה מאתחל משתנה בעל ערך אפס, בודק שהוא פחות מסף ומגדיל אותו בספירה אחת לאחר הערכת ההיגיון בתוך בלוק הלולאה (אם מתקיים תנאי העצירה). בדרך זו תוכל להשתמש באינדקס ולהקצות אותו לכל אובייקט שאליו מופנה בלוק הלולאה שלך. לשם השוואה, כך נראית לולאת for עם אותה תוצאה בפייתון:



לאניב טווח(0, 10):

הדפס (אני)

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



0

1

2

3

4

5

6

7

8

9

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





מספרים= ['אֶפֶס', 'אחד', 'שתיים', 'שְׁלוֹשָׁה', 'ארבע', 'חָמֵשׁ']

מספרים_מספרים= רשום(מספרים)

לאינדקס,פריטבמספרים_מספרים:

הדפס (אינדקס,פריט)

המשפט הראשון מגדיר משתנה חדש הנקרא מספרים ומקצה לו חוזר (סוג רשימה). ההצהרה השנייה מציגה שימוש בפונקציה הספירה שבה אתה מספק לה חוזר כטענת חובה. המשפט השלישי ממיר את המשתנה enumerated_numbers לאובייקט מסוג רשימה. כברירת מחדל, הפונקציה enumerate מייצרת אובייקט מסוג ספירה ולא סוג חוזר, לכן עליך להמיר אותו. לאחר הפעלת מדגם הקוד שהוזכר לעיל, אתה אמור לקבל את הפלט הבא:

[(0, 'אפס'), (1, 'אחד'), (2, 'שתיים'), (3, 'שלוש'), (4, 'ארבע'), (5, 'חמש')]

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



כעת, לאחר שהקצאת מספר לכל אלמנט מסוג חוזר, תוכל לעקוף אותו בקלות בלי לכתוב הצהרות מקוננות:

מספרים= ['אֶפֶס', 'אחד', 'שתיים', 'שְׁלוֹשָׁה', 'ארבע', 'חָמֵשׁ']

מספרים_מספרים= רשום(מספרים)

לאינדקס,פריטבמספרים_מספרים:

הדפס (אינדקס,פריט)

מדגם הקוד שצוין למעלה יפיק את הפלט הבא:

0 אפס

אחד

2 שניים

3 שלוש

4 ארבע

5 חמש

אתה יכול להפוך את הקוד לקצר יותר באמצעות ספירת הפונקציות בשורה, כפי שמוצג במדגם להלן:

מספרים= ['אֶפֶס', 'אחד', 'שתיים', 'שְׁלוֹשָׁה', 'ארבע', 'חָמֵשׁ']

לאינדקס,פריטב רשום(מספרים):

הדפס (אינדקס,פריט)

שימוש ב- Enumerate עם אינדקס התחלתי שונה

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

מספרים= ['אחד', 'שתיים', 'שְׁלוֹשָׁה', 'ארבע', 'חָמֵשׁ']

לאינדקס,פריטב רשום(מספרים,הַתחָלָה=1):

הדפס (אינדקס,פריט)

בהצהרה השנייה, הארגומנט start = 1 משמש לשינוי נקודת ההתחלה. לאחר הפעלת מדגם הקוד שצוין לעיל, אתה אמור לקבל את הפלט הבא:

אחד

2 שניים

3 שלוש

4 ארבע

5 חמש

הקצאת אינדקס באמצעות שלבים

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

מספרים= ['אֶפֶס', 'שתיים', 'ארבע', 'שֵׁשׁ']

לאינדקס,פריטב רוכסן(טווח(0, 7, 2),מספרים):

הדפס (אינדקס,פריט)

פונקציית ה- zip מאפשרת לך ליצור זוגות על ידי איסוף אלמנטים בעלי אותו אינדקס משני או יותר משתנים. אז פונקציית ה- zip כאן אוספת אלמנט מהפונקציה החוזרת החוזרת מטווח (0, 7, 2) ורכיב נוסף מרשימת המספרים ולאחר מכן מזווג את שניהם לחבילה. התוצאה הסופית היא יישום זהה לפונקציה הספירה אך עם שלבים מותאמים אישית המוגדרים כארגומנט שלישי בפונקציה הטווח (0, 7, 2) (2 במקרה זה). לאחר הפעלת מדגם הקוד שצוין לעיל, אתה אמור לקבל את הפלט הבא:

0 אפס

2 שניים

4 ארבע

6 שש

סיכום

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