Module: itertools

import itertools
counter=itertools.count()

#Infinite loop
for i in counter:
    print(i)

###
print(next(counter)) #0
print(next(counter)) #1
print(next(counter)) #2

###
data=[10,20,30]
zipped_data=list(zip(itertools.count(),data))
print(zipped_data) #[(0,10),(1,20),(2,30)]

counter=itertools.count(start=5,step=5)

###
data=[10,20,30]
zipped_data=list(itertools.zip_longest(range(5),data))
print(zipped_data)
##[(0, 10), (1, 20), (2, 30), (3, None), (4, None)]

###
data=[10,20,30]
counter=itertools.cycle(data)
print(next(counter)) #0
print(next(counter)) #1
print(next(counter)) #2
print(next(counter)) #0
print(next(counter)) #1
print(next(counter)) #2

###
data=[10,20,30]
counter=itertools.repeat(2,times=3)
print(next(counter)) #0
print(next(counter)) #1
print(next(counter)) #2
print(next(counter)) #error

###
squares=list(map(pow,range(10),itertools.repeat(2)))
print(squares)

###
squares=list(itertools.starmap(pow,[(0,2),(1,2),(2,2)]))
print(squares)

###
d=[1,2,3,4]
com=list(itertools.combinations(d,2))
print(com)

###

d=[1,2,3,4]
com=list(itertools.permutations(d,2))
print(com)

###
d=[1,2,3,4]
com=list(itertools.product(d,repeat=4))
print(com)

###
d=[1,2,3,4]
com=list(itertools.combinations_with_replacement(d,4))
print(com)

###
d=[1,2,3,4]
l=['a','b','c']
s=['as','you','know']
combined=itertools.chain(d,l,s)
for i in combined:
    print(i)

###
result=itertools.islice(range(10),5) #if only 2nd argument i.e stopping point
#0 1 2 3 4
result=itertools.islice(range(10),1,5) #if 2nd and 3rd argument i.e starting and stopping point
#1 2 3 4
result=itertools.islice(range(10),1,5,2) #if 2nd, 3rd and 4th argument i.e starting, stopping point adn stepping
#1 3

###
#Get first 3 lines of a log file
with open('test.log','r') as f:
    header=itertools.islice(f,3)
    for line in header:
        print(line,end='')

###
d=[1,2,3,4]
selectors=[True,True,False,True]
result=itertools.compress(d,selectors)
print(list(result))
#1 2 4

###
d=[1,2,3,4]
def lt_2(n):
    return n<2
result=filter(lt_2,d)
print(list(result))
#1
result=itertools.filterfalse(lt_2,d)
#2 3 4
d=[1,2,3,4,1]
result=itertools.dropwhile(lt_2,d)
#2 3 4 1
#Drop till first True

###
result=itertools.takewhile(lt_2,d)
#1
#Take till first False

###
d=[1,2,3,4,1]
result=itertools.accumulate(d)
#1 3 6 10 11

###
import operator
d=[1,2,3,4,1]
result=itertools.accumulate(d,operator.mul)
#1 2 6 24 24

Comments