Как определить несколько минимум в списке? - PullRequest
3 голосов
/ 03 марта 2020

У меня есть список с несколькими минимумами:

some_list = [1,4,6,4,1,7]

Есть ли встроенная функция или какое-нибудь умное решение для получения индекса минимумов?

result = [0,4]

Я сделал до сих пор это нравится, но я предпочитаю более короткое / легкое для чтения решение.

 min = 10**10
 result = [] 
 for i in range(len(some_list)):
        if some_list[i] < min:
            min = some_list[i]
            result = [i]
        elif some_list[i] == min:
            result.append(i)

Ответы [ 3 ]

13 голосов
/ 03 марта 2020

Вы можете использовать enumerate.

some_list = [1,4,6,4,1,7]
minimum=min(some_list)
index=[idx for idx,val in enumerate(some_list) if val==minimum]
# [0,4]
4 голосов
/ 03 марта 2020
In [13]: import numpy as np                                                     

In [14]: values = np.array([1,4,6,4,1,7])                                       

In [15]: np.where(values==values.min())                                         
Out[15]: (array([0, 4]),)
2 голосов
/ 03 марта 2020

Использование списка понимания, чтобы найти все индексы элемента в списке. Надеюсь, это проще.

some_list = [1,4,6,4,1,7]
result = [ i for i in range(len(some_list)) if some_list[i] == min(some_list) ]
print(result)
...