python模块 itertools
Posted peentines
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python模块 itertools相关的知识,希望对你有一定的参考价值。
itertools
我们知道,迭代器的特点是:惰性求值(Lazy evaluation),即只有当迭代至某个值时,它才会被计算,这个特点使得迭代器特别适合于遍历大文件或无限集合等,因为我们不用一次性将它们存储在内存中。
Python 内置的 itertools 模块包含了一系列用来产生不同类型迭代器的函数或类,这些函数的返回都是一个迭代器,我们可以通过 for 循环来遍历取值,也可以使用 next()
来取值。
itertools 模块提供的迭代器函数有以下几种类型:
- 无限迭代器:生成一个无限序列,比如自然数序列
1, 2, 3, 4, ...
; - 有限迭代器:接收一个或多个序列(sequence)作为参数,进行组合、分组和过滤等;
- 组合生成器:序列的排列、组合,求序列的笛卡儿积等;
无限迭代器
itertools 模块提供了三个函数(事实上,它们是类)用于生成一个无限序列迭代器:
-
count(startl=0, step=1)
创建一个从 start (默认值为 0) 开始,以 step (默认值为 1) 为步长的的无限整数迭代器
-
cycle(iterable)
对 iterable 中的元素反复执行循环,返回迭代器
-
repeat(object [,n]
反复生成 object,如果给定 n,则重复次数为 n,否则为无限
Iterator |
Arguments |
Results |
Example |
---|---|---|---|
|
start, [step] |
start, start+step, start+2*step, … |
|
|
p |
p0, p1, … plast, p0, p1, … |
|
|
elem [,n] |
elem, elem, elem, … endlessly or up to n times |
|
有限迭代器
itertools 模块提供了多个函数(类),接收一个或多个迭代对象作为参数,对它们进行组合、分组和过滤等:
Iterator
|
Arguments
|
Results
|
Example
|
chain()
|
p, q, …
|
p0, p1, … plast, q0, q1, …
|
chain(‘ABC‘, ‘DEF‘) --> A B CD E F
|
iterable
|
p0, p1, … plast, q0, q1, …
|
chain.from_iterable([‘ABC‘,‘DEF‘]) --> A B C D E F
|
|
dropwhile()
|
pred, seq
|
seq[n], seq[n+1], starting when pred fails
|
dropwhile(lambda x: x<5,[1,4,6,4,1]) --> 6 4 1
|
takewhile()
|
pred, seq
|
seq[0], seq[1], until pred fails
|
takewhile(lambda x: x<5,[1,4,6,4,1]) --> 1 4
|
tee()
|
it, n
|
it1, it2, … itn splits one iterator into n
|
|
以上是关于python模块 itertools的主要内容,如果未能解决你的问题,请参考以下文章