转自:https://www.cnblogs.com/Gaimo/p/13338940.html
itertools是python中内置的一种高效的生成各种迭代器或者是类的模块,这些函数的返回值为一个迭代器,经常被用在for循环中,当然,也可直接使用next()方法取值,今天就来说说itertools中的常用方法.
itertools按照迭代器的功能可分为三类:
- 无限迭代器: 生成一个无限序列,比如自然数序列 1, 2, 3, 4, …
- 有限迭代器: 接收一个或多个序列(sequence)作为参数,进行组合、分组和过滤等;
- 组合迭代器: 序列的排列、组合,求序列的笛卡儿积等
无限迭代器
itertools.count(start=0, step=1)
复制代码
1
|
复制代码
itertools.count(start=0, step=1)
|
itertools.cycle(iterable)
复制代码
1
|
复制代码
itertools.cycle(iterable)
|
itertools.repeat(object[, times])
复制代码
1
|
复制代码
itertools.repeat(object[, times])
|
有限迭代器
itertools.chain(iterable1, iterable2, …)
复制代码
1
|
复制代码
itertools.chain(iterable1, iterable2, ...)
|
itertools.chain.from_iterable(iterable)
复制代码
1
|
复制代码
itertools.chain.from_iterable(iterable)
|
itertools.compress(data, selectors)
复制代码
1
|
复制代码
itertools.compress(data, selectors)
|
itertools.dropwhile(predicate, iterable)
复制代码
1
|
复制代码
itertools.dropwhile(predicate, iterable)
|
itertools.takewhile(predicate, iterable)
复制代码
1
|
复制代码
itertools.takewhile(predicate, iterable)
|
itertools.ifilter(predicate, iterable)
复制代码
1
|
复制代码
itertools.ifilter(predicate, iterable)
|
itertools.ifilterfalse(predicate, iterable)
复制代码
1
|
复制代码
itertools.ifilterfalse(predicate, iterable)
|
itertools.groupby(iterable[, key])
复制代码
1
|
复制代码
itertools.groupby(iterable[, key])
|
itertools.islice(iterable, stop)
复制代码
1
|
复制代码
itertools.islice(iterable,[start], stop,[step])
|
itertools.imap(func, iter1, iter2, iter3, …)
复制代码
1
|
复制代码
imap(func, iter1, iter2, iter3, ...)
|
itertools.izip(*iterables)
复制代码
1
|
复制代码
itertools.izip(*iterables)
|
itertools.izip_longest(*iterables, [fillvalue=None])
复制代码
1
|
复制代码
itertools.izip_longest(*iterables,[fillvalue=None])
|
组合迭代器
itertools.product(*iterables[, repeat])
复制代码
1
|
复制代码
itertools.product(*iterables[, repeat])
|
itertools.product的简单使用:
复制代码
from itertools import product # 迭代器 # test script for i j in product(range(10),range(10)) print(i,j) # 同理等于两个for循环嵌套,只是这种写法远行速度遍历会快一些,时间复杂度减小。 for x in range(10): for y in range(10): print(x,y)
itertools.permutations(iterable[, r])
复制代码
1
|
复制代码
itertools.permutations(iterable[, r])
|
itertools.combinations(iterable, r)
复制代码
1
|
复制代码
itertools.combinations(iterable, r)
|
itertools.combinations_with_replacement(iterable, r)
复制代码
1
|
复制代码
itertools.combinations_with_replacement(iterable, r)
|