[vc_row][vc_column][vc_column_text]An Iterators are objects that allow you to transverse through all the values. They are iterate through for loop.
Python Iterator object must implement iterator protocol which consists of two methods __iter__() and __next__().
Python List, Tuple, String and Dictionary are the built-in iterable object in Python. All these objects used iter() method to get an iterator from. We can also use a for loop to iterate through an iterable object.
# Iterate the list value using for loop
fruit_list = ['banana','apple','Orange']
for e in fruit_list:
print(e)
The for loop actually create the iterator object and execute the next() method for each iteration.
Execute an iterator from the list, and print each values using iter() method.
fruit_list = ['banana','apple','Orange'] fruit_iter = iter(fruit_list) print(next(fruit_iter)) print(next(fruit_iter))
# Output banana apple
. . .
Create an Iterator
To create your own iterator is easy in Python. We just need to implement two methods __iter__() and __next__() to your object.
- __iter__() : a method that performs initialization operation and returns an iterator object itself.
- __next__() : a method that performs operations and returns the next item in the sequence.
Example:
Create an iterator that returns odd numbers, starting with 1.
class oddNumber:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 2
return x
Object_odd = oddNumber()
odd_iter = iter(Object_odd)
print(next(odd_iter))
print(next(odd_iter))
print(next(odd_iter))
print(next(odd_iter))
print(next(odd_iter))
# Output 1 3 5 7 9
. . .
StopIteration
StopIteration statement used to prevent the iteration to go on forever. In the __next__() method, we can add a stop condition to raise an error if the iteration is iterated a specified number of times.
Example:
Create an iterator that returns odd numbers between 1 and 20.
class oddNumber:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a < 20:
x = self.a
self.a += 2
return x
else:
raise StopIteration
Object_odd = oddNumber()
odd_iter = iter(Object_odd)
for e in odd_iter:
print(e)
# Output 1 3 5 7 9 11 13 15 17 19
. . .
[/vc_column_text][/vc_column][/vc_row]