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異常
相關文章
相關標籤/搜索