Python Iterators

Python AdvancedIterablesFree Lesson

Advertisement

Introduction

Iterators are objects that implement the iterator protocol with iter and next methods. They provide a way to traverse collections lazily.

Basic Iterator

class Counter:
    def __init__(self, limit):
        self.current = 0
        self.limit = limit
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.current >= self.limit:
            raise StopIteration
        result = self.current
        self.current += 1
        return result

for i in Counter(5):
    print(i)  # 0, 1, 2, 3, 4

Iterator from Iterable

class FileLines:
    def __init__(self, filename):
        self.filename = filename
    
    def __iter__(self):
        with open(self.filename, "r") as f:
            for line in f:
                yield line.rstrip()

for line in FileLines("data.txt"):
    print(line)

Infinite Iterator

class Fibonacci:
    def __init__(self):
        self.a, self.b = 0, 1
    
    def __iter__(self):
        return self
    
    def __next__(self):
        result = self.a
        self.a, self.b = self.b, self.a + self.b
        return result

fib = Fibonacci()
for i in range(10):
    print(next(fib))  # 0, 1, 1, 2, 3, 5, 8, 13, 21, 34

Iterator with StopIteration

class RangeIterator:
    def __init__(self, start, stop):
        self.current = start
        self.stop = stop
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.current >= self.stop:
            raise StopIteration
        value = self.current
        self.current += 1
        return value

Built-in Iterator Functions

items = [1, 2, 3]
iterator = iter(items)
print(next(iterator))  # 1
print(next(iterator, "default"))  # 2
print(next(iterator, "default"))  # 3
print(next(iterator, "default"))  # default

Practice Problems

  1. Create iterator for even numbers
  2. Implement iterator from list
  3. Build infinite generator
  4. Use iter() and next() functions
  5. Create iterator with state

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement