码迷,mamicode.com
首页 > 编程语言 > 详细

python中itertools模块介绍---01

时间:2015-03-29 21:06:11      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

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异常


python中itertools模块介绍---01

标签:

原文地址:http://my.oschina.net/935572630/blog/393338

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!