Python 从列表中获取所有最小元素及其索引
我有一个列表,其中有一个最小元素,它多次出现,如Python 从列表中获取所有最小元素及其索引,python,list,Python,List,我有一个列表,其中有一个最小元素,它多次出现,如 a = [1,2,1,1,4,5,6] 我希望Python返回元素1和列表中存在1的所有索引。我试着用 min_index, min_value = min(enumerate(a), key=operator.itemgetter(1)) 它只给出1最先出现的索引 确定最小元素,然后对照列表中的其他元素进行检查 def locate_min(a): smallest = min(a) return smallest, [in
a = [1,2,1,1,4,5,6]
我希望Python返回元素1
和列表中存在1
的所有索引。我试着用
min_index, min_value = min(enumerate(a), key=operator.itemgetter(1))
它只给出
1
最先出现的索引 确定最小元素,然后对照列表中的其他元素进行检查
def locate_min(a):
smallest = min(a)
return smallest, [index for index, element in enumerate(a)
if smallest == element]
它将返回一个元组(minu元素,[location,location,…])。如果我理解正确,这就是我认为你想要的。例如:
>>> locate_min([1, 2, 1, 1, 4, 5, 6])
(1, [0, 2, 3])
本例使用列表理解。如果您不熟悉这个,它大致相当于下面的for循环版本。(使用第一个版本,这只是为了帮助您了解其工作原理)
我就这样做:
minimum = min(a)
indices = [i for i, v in enumerate(a) if v == minimum]
minimum = min(a)
indices = [i for i, v in enumerate(a) if v == minimum]