Iterators and iterables

Explore numbers object

numbers = [1,2,3,4]
print(dir(numbers))
value = iter(numbers)

item1 = value.__next__()
print(item1)

item2 = next(value)
print(item2)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
1
2

Iterator objects

When running a for loop python builds an iterator behind the scenes as using a while loop as shown in the next code cell. Iterators are simply objects that implement the iter() method and the next() method.

num_list = [1,4,9]
iter_obj = iter(num_list) # builds an iterator object from an object

while(True):
    try:
        element = next(iter_obj)
        print(element)
    except StopIteration:
        break
1
4
9