2009-12-21 30 views
0
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] 

我在做什么错?

回答

10

Python是大小写敏感的,所以lambda x: 2**X装置:取一个参数,称之为(小写)x,完全忽略它,并返回到2的全局变量(大写)X的功率。

+2

AH!证明我是一个真正的初学者! :P谢谢! – 3zzy 2009-12-21 04:37:44

2

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

4

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

顺便说一句,也许是一个更简单的方法来构建L

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

或者,如果你想使用maplambda,然后

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

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

0

您有一个错字。它应该是:

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