今天读完了《python标准库》的第三章,前面两章(字符,容器)日后再补,今天先总结第三章:算法部分(总觉得这个算法翻译错了……)记得很有意思的是itertools.先总结一下吧。书上所列举的分解和合并迭代器有
- chain
- izip
- imap
- 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就是个切片,不详细说了。
过滤
然后所看的内容是过滤,书上所介绍的内容有下面几个
- dropwhile
- takewhile
- ifilter
- ifilterfalse
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过滤器,可以想象,就不说了
今天就先写这么多吧,感觉写写蛮有意思的哈哈.