获取元组列表中元素元组的最大值

2024-04-19 03:46:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码:

vals = [(1,3,5),(2,2,5),(1,2,6)]
max(vals ,key=itemgetter(1))[2]

我的问题是:为什么它返回5而不是6?我需要最后一个元素的最大值。如果我取max(...)[0]它得到2,如果我取max(...)[1]它得到3,但是如果我取max(...)[2],它得到5。为什么会这样?在


Tags: key代码元素maxvalsitemgetter
3条回答

key=itemgetter(1)表示max检查tuple元素,以确定哪个tuple是“max”元组。在

所以它选择第一个元组,因为3高于2,然后选择最后一个值,得到{}

如果你想的话

但是你也可以得到索引2的值,然后像这样执行max:

max(map(itemgetter(2),vals))

因为你要丢弃其他值

通过使用itemgetter(1)键控,您将要求Python根据第1个元素的值获取最大的tuple。(1,3,5)在第1个指数(即3)中具有最大的元素。然后从该元组(即5)访问第二个索引。在

要获取最后一个元素的最大值,请改用以下方法:

>>> max([c for a,b,c in vals])
6

如果需要最后一个元素,只需在代码中使用索引-1。在您的代码中,1选择每个元组的第二个元素,以便在max中进行比较,2不必要地硬编码元组的长度为3。在

>>> vals = [(1,3,5),(2,2,5),(1,2,6)]
>>> max(vals, key=itemgetter(-1))[-1]
>>> 6

相关问题 更多 >