3 回答

TA貢獻(xiàn)1876條經(jīng)驗 獲得超6個贊
>>> m = max(a)
>>> [i for i, j in enumerate(a) if j == m]
[9, 12]

TA貢獻(xiàn)1909條經(jīng)驗 獲得超7個贊
所選答案(以及大多數(shù)其他答案)需要至少兩次通過列表。
這是一站式解決方案,對于較長的列表而言可能是更好的選擇。
編輯:解決@John Machin指出的兩個缺陷。對于(2),我嘗試根據(jù)每種條件發(fā)生的估計概率和前輩的推論來優(yōu)化測試。找出合適的初始化值max_val并max_indices在所有可能的情況下都可行,這有點棘手,特別是如果max恰好是列表中的第一個值-但我相信現(xiàn)在可以了。
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
添加回答
舉報