我有一个清单: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上的两个元素)我需要找到最大值位于哪个位置。请帮忙。
3 回答

jeck猫
TA贡献1909条经验 获得超7个赞
所选答案(以及大多数其他答案)需要至少两次通过列表。
这是一站式解决方案,对于较长的列表而言可能是更好的选择。
编辑:解决@John Machin指出的两个缺陷。对于(2),我尝试根据每种条件发生的估计概率和前辈的推论来优化测试。找出合适的初始化值max_val并max_indices在所有可能的情况下都可行,这有点棘手,特别是如果max恰好是列表中的第一个值-但我相信现在可以了。
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
添加回答
举报
0/150
提交
取消