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)))
加载中,请稍侯......
精彩评论