Это должно быть наиболее эффективное решение ЦП, потому что он запускает список только один раз. Решение @Mr Geek должно быть немного лучше в памяти, потому что его путь дает только один список результатов.
xy = [50, 2, 34, 6, 4, 3, 1, 5, 2, 1, 10 ,1]
min_val = sys.maxsize
result = []
for index, num in enumerate(xy):
if num < min_val:
min_val = num
result = [index]
elif num == min_val:
result.append(index)
результат теперь содержит [6, 9, 11]
Всякий раз, когда мы находим новое минимальное значение, мы очищаем список результатов и добавляем новый номер. Всякий раз, когда мы находим тот же номер, мы добавляем его в список.