Table of Contents
Iterator and Iterables in Python
We can use iterators and iterable using for loop,genators etc.Iterators are objects used to travesrse using loop.We can build our own iterators using __iter__ and __next__.
Topics to cover in this post:
- What are iterators and iterables in Python?
- Iterating using iterator in python & user defined Iterators
- Iterators in for loop
What are iterators and iterables in Python?
Iterators are objects used to travesrse using loop.Python iterator object must implement two special methods using __iter__() and __next__().
Iterables is collections of elements through which an iterator iterates.Python has few built-in iterables like list,tuple,string etc.
Iterating using iterator in python & user defined Iterators
We can use__iter__() and __next__() methods to iterate through an iterable.
__iter__() is a function returns itself every time the iteration occurs.
__next__() is used to move to next position and return the value present at that location.Once the end of iterable is reached then __next__() will raise an Exception called as StopIteration.
Example :
""" Author : ITVoyagers (https://itvoyagers.in/) Date :25th December 2018 Description : Program to use of iter() and next() """ >>> collection=['i','Love','python'] #defined an iterable of list type >>> x=iter(collection) # x is an object of iter(), any variable name can be used in place of x >>> print(next(x)) #use of next() i >>> print(x.__next__()) #calling next() with x obj Love >>> next(x) #next() without print as we are working on prompt 'python' >>> print(next(x)) Traceback (most recent call last): File "<pyshell#6>", line 1, in print(next(x)) StopIteration #exception is raised as iterator has reached till end of iterable. >>>
Iterators in for loop
We can also iterate automatcally using for loop and without actually writing iter() and next().
We can use list,tuple,string,or range as iterable in for loop.
Syntax:
for iter_obj in iterable:
Here iter_obj is iterator object which moves in iterable
iterable can be anything like list ,tuples etc
Example :
""" Author : ITVoyagers (https://itvoyagers.in/) Date :25th December 2018 Description : Program to automate iterations using for loop(to print squares of numbers from 1 to 50 """ for i in range(1,51): print("squares of",i,"=",i**2)
Explanation:
i indicates iterator and range() provides iterable to traverse.
Example for user defined iterator :
""" Author : ITVoyagers (https://itvoyagers.in/) Date :25th December 2018 Description : Program to create user defined iterator """ class squares: def __init__(self, max = 0):#max value till which iterator will move,by default it is set to 0 self.max = max def __iter__(self): self.n = 0 #by default it is 0 but increment it with each iteration return self def __next__(self): if self.n <= self.max: result = self.n**2 # num raise to 2 self.n+= 1 #counter will increase by 1 return result else: raise StopIteration #exception will be raised once the iterator tries to cross max value
Output
>>> sq=squares(5) #creating object for class and passing max value >>> i=iter(sq) #creating object for iter() >>> next(i) 0 >>> print(next(i)) 1 >>> print(i.__next__()) 4 >>> next(i) 9 >>> next(i) 16 >>> >>> next(i) 25 >>> next(i) Traceback (most recent call last): File "<pyshell#9>", line 1, in next(i) File "C:/Python34/for_square.py", line 18, in __next__ raise StopIteration #exception will be raised once the iterator tries to cross max value StopIteration >>>
Ƭhanks for finally talking about > Iteratⲟг And Ιterables In Python – ITVoyagers
< Loved it!