首页 > 代码库 > 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