【发布时间】:2018-04-03 15:30:36
【问题描述】:
今天我面试了一个问题,我回答错了。 问题来了:
def gen():
return [lambda x: x + i for i in range(4)]
print([m(1) for m in gen()])
结果是 [4, 4, 4, 4]。我的答案是 [1, 2, 3, 4]。 我还运行了以下代码。
def gen():
return (lambda x: x + i for i in range(4))
print([m(1) for m in gen()])
结果是 [1, 2, 3, 4]。 谁能解释一下?我感到很困惑。
【问题讨论】:
-
第一个有 [ ] 括号,第二个是 ()。使用 [ ] 所有数字始终设置为最后添加的值。
-
@Nathan 我很好奇答案,你能做一个更详细的吗?也投了赞成票,觉得很有趣。
标签: python