首页 > 学院 > 开发设计 > 正文

Python Itertools

2019-11-14 11:42:31
字体:
来源:转载
供稿:网友

今天读完了《python标准库》的第三章,前面两章(字符,容器)日后再补,今天先总结第三章:算法部分(总觉得这个算法翻译错了……)记得很有意思的是itertools.先总结一下吧。书上所列举的分解和合并迭代器有

chainizipimap islice

chain

说下自己的想法,chain顾名思义,链子,可以将多个列表联合起来。书上所列举的代码

from itertools import * for i in chain([1,2,3],['a','b','c']): PRint i,

应该还是相当明显的。

izip

下面说下 izip 这个很好玩

from itertools import * for i in izip([1,2,3],['a','b','c'],[1,4,5,4]): print i

代码如上,输出为 (1, 'a', 1) (2, 'b', 4) (3, 'c', 5) 就想压缩包一样,把三个都压缩在一起,生动形象。

imap

下面是是imap,书上的解释我的理解为,每迭代一次,提取数,放入函数,然后返回值。 书上代码为:

from itertools import * for i in imap(lambda x:2*x,xrange(5)): print i

就比如从0到4调用 然后放入2*x这个函数。

islice

islice就是个切片,不详细说了。

过滤

然后所看的内容是过滤,书上所介绍的内容有下面几个

dropwhiletakewhileifilterifilterfalse

dropwhile

看名字的话是drop while(什么什么)的。

from itertools import * for i in dropwhile(lambda x:x>0,(1,5,-1,5,8)): print i

输出是 -1 5 8 那么就是while(什么什么) drop 知道第一次判断出现false之后 不扔

takewhile

和上面正好相反,while(什么什么) take 知道一次出现false之后不take

ifilter

过滤器,只留下表示为True的

from itertools import * for i in ifilter(lambda x:x>0,(1,5,-1,5,8)): print i,

输出结果为1 5 5 8

ifilterfalse

false过滤器,可以想象,就不说了

今天就先写这么多吧,感觉写写蛮有意思的哈哈.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表