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]