2024-04-19 03:46:21 发布
网友
我有这个代码:
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。为什么会这样?在
max(...)[0]
max(...)[1]
max(...)[2]
key=itemgetter(1)表示max检查tuple的秒元素,以确定哪个tuple是“max”元组。在
key=itemgetter(1)
max
tuple
所以它选择第一个元组,因为3高于2,然后选择最后一个值,得到{}
3
2
如果你想的话
但是你也可以得到索引2的值,然后像这样执行max:
max(map(itemgetter(2),vals))
因为你要丢弃其他值
通过使用itemgetter(1)键控,您将要求Python根据第1个元素的值获取最大的tuple。(1,3,5)在第1个指数(即3)中具有最大的元素。然后从该元组(即5)访问第二个索引。在
itemgetter(1)
要获取最后一个元素的最大值,请改用以下方法:
>>> max([c for a,b,c in vals]) 6
如果需要最后一个元素,只需在代码中使用索引-1。在您的代码中,1选择每个元组的第二个元素,以便在max中进行比较,2不必要地硬编码元组的长度为3。在
-1
1
>>> vals = [(1,3,5),(2,2,5),(1,2,6)] >>> max(vals, key=itemgetter(-1))[-1] >>> 6
key=itemgetter(1)
表示max
检查tuple
的秒元素,以确定哪个tuple
是“max”元组。在所以它选择第一个元组,因为}
3
高于2
,然后选择最后一个值,得到{如果你想的话
但是你也可以得到索引2的值,然后像这样执行max:
因为你要丢弃其他值
通过使用
itemgetter(1)
键控,您将要求Python根据第1个元素的值获取最大的tuple。(1,3,5)在第1个指数(即3)中具有最大的元素。然后从该元组(即5)访问第二个索引。在要获取最后一个元素的最大值,请改用以下方法:
如果需要最后一个元素,只需在代码中使用索引
-1
。在您的代码中,1
选择每个元组的第二个元素,以便在max
中进行比较,2
不必要地硬编码元组的长度为3。在相关问题 更多 >
编程相关推荐