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
所选答案(以及大多数其他答案)至少需要两次通过列表。
这里有一个单程解决方案,对于较长的列表可能是更好的选择。
编辑:以解决@John Machin指出的两个缺陷。对于(2)我试图根据每个条件的猜测发生概率和前人允许的推论来优化测试。找出
max_val
和max_indices
的正确初始化值有点困难,这适用于所有可能的情况,特别是如果max恰好是列表中的第一个值,但我相信现在是这样。将告诉您列表
a
中最大值元素的第一个实例的索引。相关问题 更多 >
编程相关推荐