6

I want a list

a = [2,4,5,2]

to give

b = [0, 3]

I know how to do it for when there is only a single min element, but not multiple min elements. example:

b = a.index(min(a))

This will give me b = 0.

Georgy
  • 9,972
  • 7
  • 57
  • 66
21rw
  • 706
  • 1
  • 10
  • 21

2 Answers2

8

Find the minimum value, then iterate the list with index using enumerate to find the minimum values:

>>> a = [2,4,5,2]
>>> min_value = min(a)
>>> [i for i, x in enumerate(a) if x == min_value]
[0, 3]
falsetru
  • 336,967
  • 57
  • 673
  • 597
  • 1
    Possible duplicate of [How to find all occurrences of an element in a list?](http://stackoverflow.com/questions/6294179/how-to-find-all-occurrences-of-an-element-in-a-list) – McGrady Apr 01 '17 at 09:19
  • 1
    @McGrady, just voted. – falsetru Apr 01 '17 at 09:20
2

You can do that using numpy in the following way:

import numpy as np
a = np.array([2,4,5,2])
np.where(a==a.min())
Miriam Farber
  • 17,600
  • 14
  • 58
  • 72