标签:
itertools模块中包含了很多函数,这些函数最终都生成一个或多个迭代器,下面对这些函数进行介绍:
为了能够使用itertools中的函数,需要将该模块导入:
>>>from itertools import *
count(start=0,step=1):
源代码为:
def count(start=0,step=1): n=start while True: yield n n+=step
从源代码可以看出,count函数产生一个生成器,该生成器可以返回一个个数,默认是从0开始,每次增加1.例如:
>>>a=count(2,3) >>>a.next() 2 >>>a.next() 5 >>>a.next() 8
当然,start和step也可以是小数。如果超出了sys.maxint,计数器将溢出,并继续聪哥-sys.maxint-1开始计算。
cycle(iterable):
源代码为:
def cycle(iterable): saved=[] for element in iterable: yield element saved.append(element) while True: for element in saved: yield element
从源代码可以看出,cycle函数创建了一个列表,然后将iterable中的元素存储进去,最后无限返回列表中的元素。因此,cycle函数的作用是创建一个生成器,该生成器无限地返回参数中的元素,例如:
>>>a=cycle([1,2,3,4]) >>>a.next() 1 >>>a.next() 2 >>>a.next() 3 >>>a.next() 4 >>>a.next() 1
repeat(object[,times]):
源代码如下:
def repeat(object,times=None): if times is None: while True: yield object else: for i in xrange(times): yield object
当times没有被指定时,repeat无限重复,返回原对象。当times指定后,将重复times次返回该对象。例如:
>>>a=repeat(‘abc‘,2) >>>a.next() ‘abc‘ >>>a.next() ‘abc‘ >>>a.next() StopIteration异常
标签:
原文地址:http://my.oschina.net/935572630/blog/393338