Python的内置模块itertools
1.itertools
Python的内建模块,
提供了非常有用的用于操作迭代对象的函数。并且itertools相当高效且节省内存。
2.itertools模块中的方法
count(初值=0, 步长=1)
count 迭代器会返回从传入的起始参数开始的均匀间隔的数值。count 也可以接收指定的步长参数。
from itertools import count for i in count(10): #从10开始无限循环,默认步长等于1 if i > 20: break else: print(i)
islice()
返回一个迭代器,该迭代器的next()方法从可迭代的如果指定start,则跳过前面的所有元素;否则,start默认值为零。
Step默认为1。如果step指定为另一个值,确定有多少个值在连续调用之间跳过。
工作方式类似于列表中的slice(),但是返回一个迭代器。
from itertools import islice,count #方式一:islice(迭代对象, 迭代数量) for i in islice(count(10), 5): print(i) for i in islice('abcdefghigk', 5): print(i) #方式二:islice(迭代对象, 开始索引,结束索引,步长) #步长不写默认为1 s=islice('abcdefghigk',1,4,2) a=list(s) print(a)
cycle(可迭代对象)
从可迭代对象中返回元素,直到它被耗尽。然后无限地重复这个序列。
from itertools import cycle count = 0 for item in cycle('XYZ'): if count > 7: break print(item) count += 1
repeat()
把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数
from itertools import repeat ns = itertools.repeat('AbC', 3) for n in ns: print(n)
takewhile(判断条件,迭代对象)
通过判断条件,终止迭代
natuals = itertools.count(1) ns = itertools.takewhile(lambda x: x <= 10, natuals) s=list(ns) print(s)
chain(可迭代对象,可迭代对象,……)
chain()可以把一组及对个迭代对象串联起来,形成一个更大的迭代器:
个人感觉没什么卵用。
first=[['1','2','3','4','4'],['2','4','2']] print(*first) x=['abc','def'] print(*x) for i in itertools.chain(*first,*x): print(i)