如何在列表中找到3个索引的最大值?

时间:2016-02-24 19:34:47

标签: python

简短而简单,让我说我有这个清单:

a = [["Bob","5","10","7","4.5","6.3","6.4"],["Charles","3","4","5","5.2","8.34","356.444"]]

我想找到指数1,2和3的最高值(所以5,10和7中的最高值,然后是3,4和5中的最高值。

我不熟悉max(),但我已经尝试了

for b in a:
   c = max(b[1],b[2],b[3])
   print(c)

毫不奇怪它不起作用。

我如何以最简单的方式做到这一点?如果我所说的有道理,我确定可能有一种简单的方法。

1 个答案:

答案 0 :(得分:4)

你可以这样做:

>>> [max(map(float, el[1:4])) for el in a]
[10.0, 5.0]

这将返回列表中包含每个条目的3个索引(1,2,3)的最大值的列表。

您的原始代码无效,因为您在转换数字(作为字符串)之前调用了max()。因此,改变

c = max(b[1],b[2],b[3])

c = max(int(b[1]),int(b[2]),int(b[3]))

也会给你预期的结果。