non iterorators in python code example
Example 1: python defining the iterator protocol
class RangeTen:
def __init__(self, *args): pass # optional
def __iter__(self):
'''Initialize the iterator.'''
self.count = -1
return self
def __next__(self):
'''Called for each iteration. Raise StopIteration when done.'''
if self.count < 9:
self.count += 1
return self.count
raise StopIteration
for x in RangeTen():
print(x) # 0, 1, ..., 9
Example 2: iterator in python
class PowTwo:
"""Class to implement an iterator
of powers of two"""
def __init__(self, max=0):
self.max = max
def __iter__(self):
self.n = 0
return self
def __next__(self):
if self.n <= self.max:
result = 2 ** self.n
self.n += 1
return result
else:
raise StopIteration
# create an object
numbers = PowTwo(3)
# create an iterable from the object
i = iter(numbers)
# Using next to get to the next iterator element
print(next(i))
print(next(i))
print(next(i))
print(next(i))
print(next(i))