itertools模块中包含了不少函数,这些函数最终都生成一个或多个迭代器,下面对这些函数进行介绍:python
为了可以使用itertools中的函数,须要将该模块导入:
app
>>>from itertools import *函数
count(start=0,step=1):code
源代码为:对象
def count(start=0,step=1): n=start while True: yield n n+=step
从源代码能够看出,count函数产生一个生成器,该生成器能够返回一个个数,默认是从0开始,每次增长1.例如:element
>>>a=count(2,3) >>>a.next() 2 >>>a.next() 5 >>>a.next() 8
固然,start和step也能够是小数。若是超出了sys.maxint,计数器将溢出,并继续聪哥-sys.maxint-1开始计算。it
cycle(iterable):
io
源代码为:class
def cycle(iterable): saved=[] for element in iterable: yield element saved.append(element) while True: for element in saved: yield element
从源代码能够看出,cycle函数建立了一个列表,而后将iterable中的元素存储进去,最后无限返回列表中的元素。所以,cycle函数的做用是建立一个生成器,该生成器无限地返回参数中的元素,例如:import
>>>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异常