Python 中的 max() 表达式如何工作?
代码如下:
a = [1,2,3,4]
b = {}
b[1] = 10
b[2] = 8
b[3] = 7
b[4] = 5
print max(a,key=lambda w: b[w])
打印出1
。
我不明白 max(a,key=lambda w: b[w]) 是如何在这里评估的;我猜测对于 a 中的每个值 i,它通过将
- i 的当前值保存为 lambda 函数中的 w 来
- 找到相应的值 b[i] ,从 b[i] 获取相应的值并将其存储在 key 中。
但为什么它打印出 1 而不是 11 呢?或者为什么它不打印出 10,因为这确实是最大数字?
Here's the code:
a = [1,2,3,4]
b = {}
b[1] = 10
b[2] = 8
b[3] = 7
b[4] = 5
print max(a,key=lambda w: b[w])
This prints out 1
.
I don't understand how max(a,key=lambda w: b[w])
is being evaluated here though; I'm guessing for each value i in a, it finds the corresponding value b[i] by
- saving the current value of i as w in the lambda function
- getting the corresponding value from b[i] and storing it in key.
But then why does it print out 1 instead of 11? Or why doesn't it print out 10, since that's really the maximum number?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
max(a,...)
始终会返回a
的元素。所以结果将是 1、2、3 或 4。对于
a
中的每个值w
,键值为b[w]
。最大的键值为 10,对应于w
等于 1。因此max(a,key=lambda w: b[w])
返回 1。max(a,...)
is always going to return an element ofa
. So the result will be either 1,2,3, or 4.For each value
w
ina
, the key value isb[w]
. The largest key value is 10, and that corresponds withw
equalling 1. Somax(a,key=lambda w: b[w])
returns 1.尝试:
Try: