X = 5
L = list(map(lambda x: 2**X, range(7)))
print (L)
...我希望这个返回:了解LAMBDA
[1, 2, 4, 8, 16, 32, 64]
...相反,它返回:
[32, 32, 32, 32, 32, 32, 32]
我在做什么错?
X = 5
L = list(map(lambda x: 2**X, range(7)))
print (L)
...我希望这个返回:了解LAMBDA
[1, 2, 4, 8, 16, 32, 64]
...相反,它返回:
[32, 32, 32, 32, 32, 32, 32]
我在做什么错?
Python是大小写敏感的,所以lambda x: 2**X
装置:取一个参数,称之为(小写)x
,完全忽略它,并返回到2的全局变量(大写)X
的功率。
尝试L = list(map(lambda x: 2**x, range(7)))
一次。您正在使用X
而不是x
。
Python区分大小写。 x
和X
是不同的变量。
顺便说一句,也许是一个更简单的方法来构建L
将
L=[2**x for x in range(7)]
或者,如果你想使用map
和lambda
,然后
L=map(lambda x: 2**x, range(7))
就足够了。 map
返回一个列表,因此您不必将表达式包装在list(...)
中。
您有一个错字。它应该是:
# Upper case X refers to 5
list(map(lambda x: 2**x, range(7)))
AH!证明我是一个真正的初学者! :P谢谢! – 3zzy 2009-12-21 04:37:44