Python Itertools

今天读完了《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过滤器,可以想象,就不说了

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值