python itertools迭代器----无限迭代器

概念:

itertools是python非常有用的内置模块,提供用于操作高效迭代对象的函数的集合。

案例:

无限迭代器,顾名思义如果没有条件判断将永远的返回该对象

1、itertools.count(start,step):从start开始,按step步长返回需要的值

import itertools
#itertools.count从数值10开始,每次+2,当大于20时停止
for i in itertools.count(10,2):
    if i> 20:
        break
    else:
        print ('itertools.count %s'%i)

输出:

itertools.count 10
itertools.count 12
itertools.count 14
itertools.count 16
itertools.count 18
itertools.count 20

2、itertools.cycle(iterable):传入一个可迭代的对象,无限循环

#itertools.cycle,这里设置一个计数器,当大于7时循环结束,循环读取'calm'中的元素,读取8次。
count = 0
for i in itertools.cycle('calm'):
    if count>7:
        break
    print ('itertools.cycle %s' %i)
    count +=1

输出:

itertools.cycle c
itertools.cycle a
itertools.cycle l
itertools.cycle m
itertools.cycle c
itertools.cycle a
itertools.cycle l
itertools.cycle m

3、itertools.repeat(object,times=None):创建一个迭代器,不断重复object,通过times值控制重复次数,不设置则无限循环

#itertools.repeat()
lst1 = ['c','a','l','m']
for i in itertools.repeat(lst1,2):
    print ('itertools.repeat %s' %i)

输出:

itertools.repeat ['c', 'a', 'l', 'm']
itertools.repeat ['c', 'a', 'l', 'm']

#repeat 最常见的用途就是在 map 或 zip 提供一个常量流:

print (list(map(pow, range(10), itertools.repeat(3))))

输出:

[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]

你可能感兴趣的:(Python笔记)