Iterator Functions in Python | Set 2 (islice(), starmap(), tee()..) - GeeksforGeeks

04 Feb, 2020
Iterator Functions in Python | Set 1
1. islice(iterable, start, stop, step) :- This iterator selectively prints the values mentioned in its iterable container passed as argument. This iterator takes 4 arguments, iterable container, starting pos., ending position and step.
2. starmap(func., tuple list) :- This iterator takes a function and tuple list as argument and returns the value according to the function from each tuple of list.
# Python code to demonstrate the working of # islice() and starmap()  # importing "itertools" for iterator operationsimport itertools  # initializing list li = [2, 4, 5, 7, 8, 10, 20]  # initializing tuple listli1 = [ (1, 10, 5), (8, 4, 1), (5, 4, 9), (11, 10 , 1) ]    # using islice() to slice the list acc. to need# starts printing from 2nd index till 6th skipping 2print ("The sliced list values are : ",end="")print (list(itertools.islice(li,1, 6, 2)))  # using starmap() for selection value acc. to function# selects min of all tuple valuesprint ("The values acc. to function are : ",end="")print (list(itertools.starmap(min,li1)))
Output:
The sliced list values are : [4, 7, 10]
The values acc. to function are : [1, 1, 4, 1]

3. takewhile(func, iterable) :- This iterator is opposite of dropwhile(), it prints the values till the function returns false for 1st time.
4. tee(iterator, count) :- This iterator splits the container into a number of iterators mentioned in the argument.
# Python code to demonstrate the working of # takewhile() and tee()  # importing "itertools" for iterator operationsimport itertools  # initializing list li = [2, 4, 6, 7, 8, 10, 20]  # storing list in iteratoriti = iter(li)  # using takewhile() to print values till condition is false.print ("The list values till 1st false value are : ",end="")print (list(itertools.takewhile(lambda x : x%2==0,li )))  # using tee() to make a list of iterators# makes list of 3 iterators having same values.it = itertools.tee(iti, 3)  # printing the values of iteratorsprint ("The iterators are : ")for i in range (0,3):    print (list(it[i]))
Output:
The list values till 1st false value are : [2, 4, 6]
The iterators are : 
[2, 4, 6, 7, 8, 10, 20]
[2, 4, 6, 7, 8, 10, 20]
[2, 4, 6, 7, 8, 10, 20]

5. zip_longest( iterable1, iterable2, fillval.) :- This iterator prints the values of iterables alternatively in sequence. If one of the iterables is printed fully, remaining values are filled by the values assigned to fillvalue.
# Python code to demonstrate the working of # zip_longest()  # importing "itertools" for iterator operationsimport itertools  # using zip_longest() to combine two iterables.print ("The combined values of iterables is  : ")print (*(itertools.zip_longest('GesoGes','ekfrek',fillvalue='_' )))
Output:
The combined values of iterables is  : 
('G', 'e') ('e', 'k') ('s', 'f') ('o', 'r') ('G', 'e') ('e', 'k') ('s', '_')

Combinatoric Iterators
1. product(iter1, iter2) :- This iterator prints the cartesian product of the two iterable containers passed as arguments.
2. permutations(iter, group_size) :- This iterator prints all possible permutation of all elements of iterable. The size of each permuted group is decided by group_size argument.
# Python code to demonstrate the working of # product() and permutations()  # importing "itertools" for iterator operationsimport itertools  # using product() to print the cartesian productprint ("The cartesian product of the containers is : ")print (list(itertools.product('AB','12')))  # using permutations to compute all possible permutationsprint ("All the permutations of the given container is : ")print (list(itertools.permutations('GfG',2)))
Output:
The cartesian product of the containers is : 
[('A', '1'), ('A', '2'), ('B', '1'), ('B', '2')]
All the permutations of the given container is : 
[('G', 'f'), ('G', 'G'), ('f', 'G'), ('f', 'G'), ('G', 'G'), ('G', 'f')]

3. combinations(iterable, group_size) :- This iterator prints all the possible combinations(without replacement) of the container passed in arguments in the specified group size in sorted order.
4. combinations_with_replacement(iterable, group_size) :- This iterator prints all the possible combinations(with replacement) of the container passed in arguments in the specified group size in sorted order.
# Python code to demonstrate the working of # combination() and combination_with_replacement()  # importing "itertools" for iterator operationsimport itertools  # using combinations() to print every combination# (without replacement)print ("All the combination of container in sorted order(without replacement) is : ")print (list(itertools.combinations('1234',2)))  # using combinations_with_replacement() to print every combination# with replacementprint ("All the combination of container in sorted order(with replacement) is : ")print (list(itertools.combinations_with_replacement('GfG',2)))
Output:
All the combination of container in sorted order(without replacement) is : 
[('1', '2'), ('1', '3'), ('1', '4'), ('2', '3'), ('2', '4'), ('3', '4')]
All the combination of container in sorted order(with replacement) is : 
[('G', 'G'), ('G', 'f'), ('G', 'G'), ('f', 'f'), ('f', 'G'), ('G', 'G')]

Infinite Iterators
1. count(start, step) :- This iterator starts printing from the “start” number and prints infinitely. If steps are mentioned, the numbers are skipped else step is 1 by default.
Example :
iterator.count(5,2) prints -- 5,7,9,11...infinitely

2. cycle(iterable) :- This iterator prints all values in order from the passed container. It restarts printing from beginning again when all elements are printed in a cyclic manner.
Example :
iterator.cycle([1,2,3,4]) prints -- 1,2,3,4,1,2,3,4,1...infinitely

3. repeat(val, num) :- This iterator repeatedly prints the passed value infinite number of times. If num. is mentioned, them till that number.
# Python code to demonstrate the working of # repeat()  # importing "itertools" for iterator operationsimport itertools  # using repeat() to repeatedly print numberprint ("Printing the numbers repeatedly : ")print (list(itertools.repeat(25,4)))
Output:
Printing the numbers repeatedly : 
[25, 25, 25, 25]

YouTubeGeeksforGeeks507K subscribersPython Programming Tutorial | Iterator Functions - Part 2 | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.You're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmMore videosMore videosSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 5:32•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=cgrDYgW0C3o" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
This article is contributed by Manjeet Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Read a file line by line in Python
How to Install PIP on Windows ?
Different ways to create Pandas Dataframe
Python String | replace()
*args and **kwargs in Python
Reading and Writing to text files in Python
Create a Pandas DataFrame from Lists
Convert integer to string in Python
Check if element exists in list in Python