Python推导式(列表推导式、字典推导式、集合推导式、lambda推导式)

temp=[lambda x: i * x for i in range(3)]
print([m(1) for m in temp])
  • 首先解析这个函数:temp是个列表,内部自变量为i,由内部函数传入,外部参数为x,由外部调用输入,i in range(3)有三个元素,所以列表中有三个元素,但是i只能取值3,所以temp=[(lambda x : i*x),(lambda x : i*x),(lambda x : i*x)],可以理解为先从i in range(3)开始进行计算,最后得到i=2,然后将i带入temp中,得到temp=[(lambda x : 2*x),(lambda x : 2*x),(lambda x : 2*x)],即[2 * x,2* x,2 * x],m(1)表示将x=1带入列表中,代码输出:[2,2,2]。
temp=[lambda x,y=i: y * x for i in range(3)]
print([m(1) for m in temp])
  • 此时解析这个函数:temp是个列表,内部自变量为i,由内部函数传入,外部参数为x,y,但是默认y值等于i值,temp=[(lambda x,y=i: y * x),(lambda x,y=i: y * x),(lambda x,y=i: y * x)],可以理解为y作为变量,会随着i值变化而改变,首先计算i in range(3),虽然最终i=2,但是y记录了i值得变化,所以y取值为0,1,2。所以列表中有三个元素,y值可以分别取值到0,1,2,所以temp=[(lambda x,y=0: y * x),(lambda x,y=1·: y * x),(lambda x,y=2: y * x)],即temp=[0 * x,1* x,2 * x],m(1)表示将x=1带入列表中,代码输出:[0,1,2]。
def multipliers():
    return [lambda x,y=i: y * x for i in range(4)]
print([m(2) for m in multipliers()])
  • 此时是将推导式放进了函数中去,直接在函数外部传入变量即可输出结果[0,2,4,6]

参考:

  • [1] https://blog.csdn.net/xie_0723/article/details/53925076
  • [2] https://www.jianshu.com/p/bc8780cfacd8
  • https://www.cnblogs.com/tkqasn/p/5977653.html
  • https://www.runoob.com/note/15802
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值