python中关于关于推导式和lambda的问题

L=[Lambda x:x*a for a in [2,3]]为什么L[0](1)=3呢?
2024-11-30 09:31:11
推荐回答(2个)
回答1:

lambda函数是匿名函数。你例子中的lambda函数做了个运算处理.
这些你应该知道,你想知道的是L[0](1)为啥不是2,而是3对吧。
因为你在里面做了循环,所以每次x*a先算的是乘以2,再循环乘以3,所以后面会覆盖前面的。不信你可以在加个4试试。

回答2:

L列表里面是个函数对象,相当于下面的函数,这个函数在生成的时候a总是循环完毕取到最后的列表值,本例是3,如果后面有4,5,6....类推

def func(x):
    return x*3