Как вернуть индекс наименьшего элемента в списке в Python

1

В моем коде возвращает позицию наименьшего элемента в списке с помощью функции index(), когда я запускаю код, он ничего не запускает. Пожалуйста, помогите мне разобраться в проблеме. Вот что я закодировал:

def get_index_of_smallest(numbers):
    smallest_index = []
    for element in range (len(numbers)):
        element = numbers.index(min(numbers))
        smallest_index = element + 1
    return smallest_index

def test_get_index_of_smallest():
    list1 = [23, 3, 6, 5, 12, 9, 7, 4]
    print(get_index_of_smallest(list1))

Большое спасибо.

  • 0
    мин (список1), сделано
Теги:

4 ответа

1

Вы можете использовать функцию min(list) и встроенную функцию list (list.index())

list1 = [23, 3, 6, 5, 12, 9, 7, 4]
min_num = min(list1)
index = list1.index(min_num)
0

Мы можем использовать список и перечислять здесь

min_idx = [idx for idx, item in enumerate(list1) if item == min(list1)]
[1]

Вот расширенная версия того, что происходит здесь.

for idx, item in enumerate(list1):
    if item == min(list1):
        min_idx = idx

Когда мы enumerate в нем итерации для index и item то, что мы можем сделать, это проверить каждый item v min(list1) если мы получим соответствие, мы можем установить нашу переменную min_idx соответствующему index этого item, ура!

0

Ваш код выглядит хорошо, но вы забыли вызвать функцию. Добавьте test_get_index_of_smallest(), и он будет работать!

Входные данные:

def get_index_of_smallest(numbers):
    smallest_index = []
    for element in range (len(numbers)):
        element = numbers.index(min(numbers))
        smallest_index = element + 1
    return smallest_index

def test_get_index_of_smallest():
    list1 = [23, 3, 6, 5, 12, 9, 7, 4]
    print(get_index_of_smallest(list1))

test_get_index_of_smallest()

Выход:

2

Изменить. Вы также можете сократить свой код. Вот код, который делает то же самое:

Входные данные:

def get_index_of_smallest(numbers):
    return numbers.index(min(numbers))+1

print(get_index_of_smallest([23, 3, 6, 5, 12, 9, 7, 4]))

Выход:

2
  • 0
    Есть ли у меня другие решения, чтобы мой код работал, я чувствую, что у моего кода все еще есть проблемы. Спасибо
  • 0
    Ваш код работает просто отлично, однако я добавил более короткий код, который делает то же самое, что и код, который вы опубликовали. Смотрите мое редактирование.
Показать ещё 3 комментария
0

Один из способов, возможно использование min, emumerate и lambda

myList = [23, 3, 6, 5, 12, 9, 7, 4]
min(enumerate(myList), key=lambda x:x[1])[0]
#1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню