【问题标题】:what's the difference between these two python functions [duplicate]这两个python函数有什么区别[重复]
【发布时间】: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


【解决方案1】:

使用() 的第二个代码sn-p 是一个生成器。 用来节省内存

PEP-289

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多