如何找到列表中最大值的所有位置?
我有一个列表:
a = [32, 37, 28, 30, 37, 25, 27, 24, 35, 55, 23, 31, 55, 21, 40, 18, 50,
35, 41, 49, 37, 19, 40, 41, 31]
最大值是55(在第9和第12个位置上各有一个元素是55)
我需要找出最大值所在的位置。请帮帮我。
18 个回答
22
这个选择的答案(还有其他大部分答案)都需要对列表进行至少两次遍历。
这里有一个只需一次遍历的解决方案,可能更适合处理较长的列表。
编辑:为了回应@John Machin指出的两个不足之处。对于第二个问题,我尝试根据每种情况出现的概率进行优化,并利用前面的结果进行推断。找出max_val
和max_indices
的合适初始化值有点棘手,尤其是在最大值恰好是列表中的第一个值时——但我相信现在已经解决了这个问题。
def maxelements(seq):
''' Return list of position(s) of largest element '''
max_indices = []
if seq:
max_val = seq[0]
for i,val in ((i,val) for i,val in enumerate(seq) if val >= max_val):
if val == max_val:
max_indices.append(i)
else:
max_val = val
max_indices = [i]
return max_indices
377
a.index(max(a))
这段话的意思是,它会告诉你列表 a
中最大值元素第一次出现的位置。
261
>>> m = max(a)
>>> [i for i, j in enumerate(a) if j == m]
[9, 12]
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。