此代码打印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
k
存在什么命名空间?1 2 3
具有与列表理解相同的代码复杂性/长度?我正在硬编码flists列表,我不希望我的代码过长。答案 0 :(得分:0)
这很简单应该是这样的:
>>> flist = [ k+1 for k in range(3)]
>>> flist
[1, 2, 3]