Effective Python之第27条:用列表推导取代map与Filter

列表推导:可根据某个序列或可迭代对象派生出一份新的列表。

  • 列表推导要比内置的map与filter函数清晰,因为其不用另外定义lambda表达式。
a = [1,2,3,4]
# 求a列表下每个元素的平方
squ = [x**2 for x in a]
# map用法:alt = map(lambda x:x**2,a)
  • 列表推导可以很容易地跳过原列表中的某些数据,例如改用map实现,必须搭配filter才能实现。
a = [1,2,3,4]
# 求a列表下偶数元素的平方
even_squ = [x**2 for x in a if x % 2 == 0]
  • 字典与集合也可以通过推导来创建,分别叫作字段推导与集合推导
a = [1,2,3,4]
# 求a列表下偶数元素的平方
even_squ_dict = {x:x**2 for x in a if x % 2 == 0}
>>> {2:4,4:16}
even_squ_set = {x**2 for x in a if x % 2 == 0}
>>> {4,16}
# 若用map与filter实现,必须要调用相应的构造器(constructor),代码较长
# alt_dict = dict(map(lambda x :(x,x**2),filter(lambda x:x % 2 == 0,a)))
# alt_srt = set(map(lambda x :x**2,filter(lambda x:x % 2 == 0,a)))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值