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,它会通过以下步骤找到对应的 b[i] 值:
- 把当前的 i 保存为 w,放在这个叫做 lambda 的小函数里
- 从 b 中获取对应的值 b[i],并把它存储在 key 里。
但是,为什么它输出的是 1 而不是 11 呢?或者说,为什么不输出 10,因为那才是最大的数字呢?
2 个回答
-3
试试这个:
a = [1,2,3,4]
b = {}
b[1] = 10
b[2] = 8
b[3] = 7
b[4] = 5
c = a + b.values()
print max(*c)
9
max(a,...)
这个函数总是会返回列表 a
中的一个元素。所以结果可能是 1、2、3 或者 4。对于列表 a
中的每个值 w
,关键的值是 b[w]
。在这些关键值中,最大的值是 10,而这个值对应的 w
是 1。因此,max(a,key=lambda w: b[w])
最终返回的是 1。