【问题标题】:Understanding Lambda了解 Lambda
【发布时间】:2009-12-21 04:31:30
【问题描述】:
X = 5
L = list(map(lambda x: 2**X, range(7)))
print (L)

...我期待它返回:

[1, 2, 4, 8, 16, 32, 64]

...相反,它返回:

[32, 32, 32, 32, 32, 32, 32]

我做错了什么?

【问题讨论】:

    标签: python map lambda


    【解决方案1】:

    Python 是区分大小写的,所以lambda x: 2**X 的意思是:接受一个参数,调用它(小写)x,完全忽略它,并返回 2 的全局变量的幂(大写)X

    【讨论】:

    • 啊!证明我是一个真正的初学者! :P 谢谢!
    【解决方案2】:

    Python 区分大小写。 xX 是不同的变量。

    顺便说一句,构造L 的更简单的方法可能是

    L=[2**x for x in range(7)]
    

    或者,如果您想使用maplambda,那么

    L=map(lambda x: 2**x, range(7))

    足够了。 map 返回一个列表,因此您不必将表达式包装在 list(...) 中。

    【讨论】:

      【解决方案3】:

      尝试L = list(map(lambda x: 2**x, range(7))) 一次。您使用的是X 而不是x

      【讨论】:

        【解决方案4】:

        你有一个错字。应该是:

        # Upper case X refers to 5
        list(map(lambda x: 2**x, range(7)))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-10
          • 2020-09-12
          • 2011-07-25
          • 2016-11-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多