首页 > 代码库 > python, itertools模块

python, itertools模块

通过itertools模块,可以用各种方式对数据进行循环操作

1, chain()

from intertools import chain

for i in chain([1,2,3], (‘a‘, ‘b‘, ‘c‘), ‘abcde‘):

    print i

chain将可迭代的对象链接在一起,iter1循环完后,接着循环iter2.直到所有的iter循环完。

 

2, combinations()

from intertools import combinations

for i in combinations([1,2,3,4], 2):

    print i

(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

第一个参数是一个可迭代对象, 第二个参数是返回的长度。

 

3, dropwhile(predicate, iterable)

和fileter()的功能差不多

from intertools import dropwhile

x = lambda x : x < 5

for i in dropwhile(x, [1,2,3,4,5,6,7,8]):

    print x

将iterable中不满足x的都扔掉了,只循环满足条件x的.

 

4, imap()

和Python 自带的map一样

eg:

from itertools import imap

x = lambda x, y : x + y

for i in imap(x, ‘1234‘, ‘abcd‘):

    print i

1a

2b

3c

4d

x的两个参数分别来自于后面两个可迭代对象

for i in map(x, ‘1234‘, ‘abcd‘):

    pirnt i

和上面结果一样

 

5,islice(iterable, start, end, step)

from itertools import islice

t = ‘abcdefghijk‘

for i in islice(t, 0, 5, 1):

    print i

指循环s前5个元素。t[0], t[1], t[2], t[3], t[4]

for i in islice(t, 5):

    print i

t之后只有一个参数,这个代表end. 如果想让这个代表start, 必须这样写: for i in islice(t, 5, None):表示从t[5]开始循环,一直到结束。步进默认为1.

 

6, repeat(object, times)   将object循环n次,不是循环object里面的元素,就是循环它本身,不一定要是可迭代对象

from itertools import repeat

for i in repeat(5, 3):

    print i

得到 5 5 5 (5是一个整数,所以不限于可迭代的对象,只是循环object本身,是什么就循环几次什么)

 

 

其他用法:izip(ite1,ite2) (等同于Python自带的zip), repeat(object, times)(将object循环n次,不是循环object里面的元素,就是循环它本身,不一定要是可迭代对象),

 

freemao

FAFU

free_mao@qq.com