码迷,mamicode.com
首页 > 编程语言 > 详细

python模块 itertools

时间:2020-06-21 19:50:40      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:val   next   sky   one   hellip   种类   分组   fail   div   

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

标签:val   next   sky   one   hellip   种类   分组   fail   div   

原文地址:https://www.cnblogs.com/peentines/p/13173476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!