Python中的max()表达式是怎样工作的?

2 投票
2 回答
6613 浏览
提问于 2025-04-15 17:04

这是代码:

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] 值:

  1. 把当前的 i 保存为 w,放在这个叫做 lambda 的小函数里
  2. 从 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。

撰写回答