itertools
count
import itertools
for i in itertools.count(0, 2):
print(i)
cycle
import itertools
for i in itertools.cycle('abc'):
print(i)
repeat
import itertools
for i in itertools.repeat('abc',10):
print(i)
accumulate
import itertools
for i in itertools.accumulate([1,2,3,4,5]):
print(i)
chain
from itertools import chain
print(list(chain(range(0,5), range(5,11))))
print(list(chain([0,1,2,3,4],[5,6,7,8,9,10])))
chain.from_iterable
import itertools
a = ['abc',['d','e','f']]
for i in itertools.chain.from_iterable(a):
print(i)
compress
import itertools
table = [1, 0, 1, 0, 1]
a = ['a','b','c','d']
for i in itertools.compress(a, table):
print(i)
dropwhile
import itertools
a = [1,2,3,4,5,6,7,8,9,10]
for i in itertools.dropwhile(lambda x:True if x <=5 else False,a):
print(i)
filterfalse
import itertools
a = [1,2,3,4,5,6,7,8,9,10]
for i in itertools.filterfalse(lambda x:True if x <=5 else False,a):
print(i)
groupby
import itertools
dic = [
{'class':'1班','name':'小红'},
{'class':'1班','name':'小军'},
{'class':'2班','name':'小李'},
{'class':'3班','name': '小韩'},
{'class':'2班','name':'小刚'},
{'class':'3班','name':'小赵'}
]
for group in itertools.groupby(sorted(dic,key=lambda x:x['class']), lambda x:x['class']):
print(group)
islice
import itertools
a = range(10)
print(list(itertools.islice(a, 10)))
print(list(itertools.islice(a, 1, 10)))
print(list(itertools.islice(a, 1, None, 2)))
print(list(itertools.islice(a, 100, None, 2)))
starmap
import itertools
# map
k = [1,2,3,4,5,6]
v = ['a','b','c']
for i in map(lambda x,y:x+y,[1,2,3],[1,2,3,4,5,6]):
print(i)
# starmap
for i in itertools.starmap(lambda x:x,[{'a':1},{'b':2},{'c':3}]):
print(i)
for i in itertools.starmap(lambda x:x,[(1,),(2,),(3,)]):
print(i)
for i in itertools.starmap(lambda x,y:x+y,[(1,2),(3,4),(5,6)]):
print(i)
takewhile
import itertools
a = [1,2,0,1,2]
b = itertools.takewhile(lambda x:True if x >= 1 else False, a)
print(list(b))
tee
import itertools
a = ['a','b','c']
for i in itertools.tee(a, 2):
print(i)
zip_longest
import itertools
k = [1,2,3,4,5,6]
v = ['a','b','c']
for i in itertools.zip_longest(k,v,fillvalue=None):
print(i)