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)