今天读完了《python标准库》的第三章,前面两章(字符,容器)日后再补,今天先总结第三章:算法部分(总觉得这个算法翻译错了……)记得很有意思的是itertools.先总结一下吧。书上所列举的分解和合并迭代器有
chainizipimap islice说下自己的想法,chain顾名思义,链子,可以将多个列表联合起来。书上所列举的代码
from itertools import * for i in chain([1,2,3],['a','b','c']): PRint i,应该还是相当明显的。
下面说下 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,书上的解释我的理解为,每迭代一次,提取数,放入函数,然后返回值。 书上代码为:
from itertools import * for i in imap(lambda x:2*x,xrange(5)): print i就比如从0到4调用 然后放入2*x这个函数。
islice就是个切片,不详细说了。
然后所看的内容是过滤,书上所介绍的内容有下面几个
dropwhiletakewhileifilterifilterfalse看名字的话是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之后 不扔
和上面正好相反,while(什么什么) take 知道一次出现false之后不take
过滤器,只留下表示为True的
from itertools import * for i in ifilter(lambda x:x>0,(1,5,-1,5,8)): print i,输出结果为1 5 5 8
false过滤器,可以想象,就不说了
今天就先写这么多吧,感觉写写蛮有意思的哈哈.
新闻热点
疑难解答