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

count()

start, [step]

start, start+step, start+2*step, …

count(10) --> 10 11 12 13 14...

cycle()

p

p0, p1, … plast, p0, p1, …

cycle(‘ABCD‘) --> A...

repeat()

elem [,n]

elem, elem, elem, … endlessly or up to n times

repeat(10, 3) --> 10 10 10

有限迭代器

itertools 模块提供了多个函数(类),接收一个或多个迭代对象作为参数,对它们进行组合、分组和过滤等:

 

Iterator
Arguments
Results
Example
chain()
p, q, …
p0, p1, … plast, q0, q1, …
chain(‘ABC‘, ‘DEF‘) --> A B CD E F
chain.from_iterable()
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的主要内容,如果未能解决你的问题,请参考以下文章

python,itertools模块

Python的itertools模块

Python的itertools模块

python itertools 模块

python模块 itertools

python itertools 模块