Menu
Coddy logo textTech

הפונקציות Iter() ו-Next()

שיעור 2 מתוך 13 בקורס איטרטורים ב-Python של Coddy.

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

הפונקציה iter()

הפונקציה iter() משמשת ליצירת אובייקט איטרטור מתוך אובייקט שניתן לאיטרציה. התחביר הבסיסי שלה הוא:

iter(iterable)

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

הפונקציה next()

הפונקציה next() משמשת לשליפת הפריט הבא מאיטרטור. התחביר הבסיסי שלה הוא:

next(iterator)

בכל פעם שקוראים ל-next() על איטרטור, היא מחזירה את האיבר הבא ברצף. אם לא נותרו איברים, היא מעלה חריגת StopIteration.

שימוש ב-iter() וב-next()

בואו נראה כיצד הפונקציות האלה פועלות יחד:

# צרו רשימה (אובייקט שניתן לעבור עליו)
fruits = ['apple', 'banana', 'cherry']

# צרו איטרטור מהרשימה
fruit_iterator = iter(fruits)

# השתמשו ב-next() כדי לקבל איברים מהאיטרטור
print(next(fruit_iterator))  # פלט: apple
print(next(fruit_iterator))  # פלט: banana
print(next(fruit_iterator))  # פלט: cherry
# print(next(fruit_iterator))  # פעולה זו תגרום לחריגת StopIteration

בדוגמה זו, אנחנו יוצרים איטרטור fruit_iterator מתוך הרשימה fruits באמצעות iter(). לאחר מכן אנחנו משתמשים ב-next() כדי לשלוף כל איבר מהאיטרטור.

יצירת איטרטור מותאם אישית בסיסי

אפשר גם ליצור איטרטור משלכם באמצעות מימוש המתודות __iter__() ו-__next__() במחלקה:

class CountUp:
    def __init__(self, start, end):
        self.current = start
        self.end = end
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.current > self.end:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1

# שימוש באיטרטור המותאם אישית
counter = CountUp(1, 3)
print(next(counter))  # פלט: 1
print(next(counter))  # פלט: 2
print(next(counter))  # פלט: 3

האיטרטור המותאם אישית CountUp סופר כלפי מעלה ממספר התחלה עד למספר סיום. המתודה __iter__() מחזירה את אובייקט האיטרטור עצמו, והמתודה __next__() מגדירה כיצד לקבל את הערך הבא.

הבנת iter() ו-next() חיונית לעבודה עם איטרטורים ב-Python, ומאפשרת לכם ליצור רצפי נתונים ולתפעל אותם ביעילות.

quiz iconבחנו את עצמכם

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

quiz iconבחנו את עצמכם

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

quiz iconבחנו את עצמכם

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

challenge icon

אתגר

קל

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

הנתונים הבאים ניתנים לכם:

  • מספר שלם limit כקלט

האיטרטור שלכם צריך:

  • לייצר מספרים זוגיים החל מ-2
  • לעצור כשהוא מגיע לגבול הנתון או חורג ממנו

הדפיסו כל מספר זוגי שנוצר בשורה חדשה.

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

נסו בעצמכם

# קראו את הקלט
limit = int(input())

# TODO: כתבו את הקוד שלכם כאן
# ממשו את האיטרטור למספרים זוגיים באמצעות iter() ו-next()

# דוגמה להדפסת התוצאה
# print(next_even_number)

כל השיעורים ביחידה איטרטורים ב-Python

תרגלו בעצמכם: קומפיילר Python אונליין