python filter过滤器的使用_如何在Python 3中使用过滤器、映射和精简

的功能map和filter被有意更改为返回迭代器,并从内置并放置在functools.reduce.

所以,为了filter和map,你可以用list()像你以前一样看到结果。

>>> def f(x): return x % 2 != 0 and x % 3 != 0

...

>>> list(filter(f, range(2, 25)))

[5, 7, 11, 13, 17, 19, 23]

>>> def cube(x): return x*x*x

...

>>> list(map(cube, range(1, 11)))

[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

>>> import functools

>>> def add(x,y): return x+y

...

>>> functools.reduce(add, range(1, 11))

55

>>>

现在的建议是用生成器、表达式或列表理解替换对map和Filter的使用。例子:

>>> def f(x): return x % 2 != 0 and x % 3 != 0

...

>>> [i for i in range(2, 25) if f(i)]

[5, 7, 11, 13, 17, 19, 23]

>>> def cube(x): return x*x*x

...

>>> [cube(i) for i in range(1, 11)]

[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

>>>

他们说循环是99%的时间容易读比减少,但我只坚持functools.reduce.

99%的数字直接从Python3.0的新特性是什么?书名:Guido van Rossum.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值