Python:如何应用列表推导来制作lambda列表?

时间:2014-11-26 05:20:18

标签: python lambda list-comprehension

此代码打印2 2 2而不是1 2 3。如果在每个列表项之间共享被引用的k,我会理解这个结果,但我无法确定它。

flist = [(lambda x: k) for k in range(3)]
print(flist[0](0), flist[1](0), flist[2](0))
print(k)  # Fails as expected
  1. 列表理解如何正常工作? k存在什么命名空间?
  2. 我应该如何更改代码以使1 2 3具有与列表理解相同的代码复杂性/长度?我正在硬编码flists列表,我不希望我的代码过长。

1 个答案:

答案 0 :(得分:0)

这很简单应该是这样的:

>>> flist = [ k+1 for k in range(3)]
>>> flist
[1, 2, 3]