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)

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-09-18 17:55  HelloBaby!  阅读(159)  评论(0编辑  收藏  举报