开发者

Understanding Lambda

X = 5
L = list(map(lambda x: 2**X, range(7)))
print (L)

... I'm expecting this to return:

[1, 2, 4, 8, 16, 32, 6开发者_如何学C4]

...instead, it returns:

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

What am I doing wrong?


Python is case-sensitive, so lambda x: 2**X means: take an argument, call it (lowercase) x, ignore it completely, and return 2 to the power of global variable (uppercase) X.


Python is case-sensitive. x and X are different variables.

By the way, perhaps an easier way to construct L would be

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

Or, if you'd like to use map and lambda, then

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

suffices. map returns a list, so you do not have to wrap the expression in a list(...).


Try L = list(map(lambda x: 2**x, range(7))) once. You were using X instead of x.


You have a typo. It should be:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜