פיתון איטרטורים: מהו איטרטור בפייתון וכיצד להשתמש בו?



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

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

איטרטורים לעומת איטרבל

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





מהם פיטון איטרטורים?

פיתון אני טרטור הוא מיכל המכיל מספר ערכים ניתן לספור. ניתן לעבור על ערכים במיכל באמצעות Iterators - במיוחד רשימות.

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



my_obj = {'Edureka', 'Python', 'iterator'} iter_obj = iter (my_obj) הדפס (הבא (iter_obj))

תְפוּקָה: אדוריקה

איטרטור הוא כל סוג של פיתון שניתן להשתמש בו עם 'for in loop'.כל אובייקט שישמש כמחליף חייב ליישם את השיטות הבאות.

איטרטורים בפיתון - אדוריקה



1. __iter __ ()

זה נקרא על אתחול של אינטרטור.זה אמור להחזיר אובייקט שיש לו שיטה הבאה או __הבא__.

2. __ הבא __ ()

השיטה הבאה של ה- Iterator מחזירה את הערך הבא ל- Iterable.

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

עבור אני באובייקט: הדפס (i)

תן לנו להבין איך לולאה עובדת כמחזיר.

# צור אובייקט איטרטר מאותו iter_obj = iter (iterable) # אינסוף לולאה בעוד נכון: נסה: # קבל את אלמנט הפריט הבא = הבא (iter_obj) # עשה משהו עם אלמנט למעט StopIteration: # אם StopIteration מוגבה, מעבר ממעגל לשבור

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

אינטרטורים בהתאמה אישית

עכשיו בואו נסתכל כיצד אנו יכולים ליישם איטרטורים מותאמים אישית בפייתון. כדי להבין זאת, נשתמש בדוגמה. בדוגמה זו ניישם את השיטות __iter __ () ו- __ next __ ().

class MyNumbers: def __iter __ (self): self.a = 1 return self def __ next __ (self): x = self.a self.a + = 1 return x myclass = MyNumbers () myiter = iter (myclass) הדפס (הבא ( myiter)) הדפס (הבא (myiter)) הדפס (הבא (myiter))

תְפוּקָה: אחד

2

3

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

איטרטורים אינסופיים

לא תמיד חובה שהפריט באובייקט Iterator צריך למצות אותו. יכולים להיות איטרטורים אינסופיים (שלעולם לא נגמרים). הנה דוגמה בסיסית להדגמת איטרציות אינסופיות.

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

הבה ניקח דוגמא להבנת זאת

class MyNumbers: def __iter __ (self): self.a = 1 return self def __ next __ (self): x = self.a self.a + = 1 return x myclass = MyNumbers () myiter = iter (myclass) הדפס (הבא ( myiter)) הדפס (הבא (myiter)) הדפס (next (myiter)) הדפס (הבא (myiter)) הדפס (הבא (myiter))

תְפוּקָה: אחד
2
3
4
5

בדוגמה שלעיל הביצוע יימשך כל עוד נמשיך להוסיף את הצהרת ההדפסה. כדי לעצור את איטרטורים אינסופיים, עלינו להשתמש בהצהרת stopIteration.

כיצד להתקין שרת שף - -

StopIteration

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

class MyNumbers: def __iter __ (self): self.a = 1 return self def __ next __ (self): if self.a & ampampamplt = 5: x = self.a self.a + = 1 return x else: raise StopIteration myclass = MyNumbers () myiter = iter (myclass) עבור x ב- myiter: הדפס (x)

תְפוּקָה: אחד
2
3
4
5

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

דוגמאות לאיתור פיתון

להלן מספר דוגמאות נוספות של איטרטורים בפייתון.

my_obj = ['Edureka', 'python', 'iterator'] iter_obj = iter (my_obj) הדפס (הבא (iter_obj))

תְפוּקָה: אדוריקה

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

my_obj = ('Edureka', 'python', 'iterator') iter_obj = iter (my_obj) הדפס (הבא (iter_obj))

תְפוּקָה: אדוריקה

אנו יכולים אפילו להשתמש במחרוזת כאובייקט שניתן לחזור עליו בפייתון.

my_obj = 'Edureka' iter_obj = iter (my_obj) הדפס (הבא (iter_obj))

תְפוּקָה: IS

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

אם אתה מאמר שמאמר זה בנושא 'פיתון איטרטורים' רלוונטי, בדוק זאת חברת למידה מקוונת אמינה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם.

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

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