python中itertools模块介绍---01

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异常
相关文章
相关标签/搜索