В моем коде возвращает позицию наименьшего элемента в списке с помощью функции 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))
Большое спасибо.
Вы можете использовать функцию min(list)
и встроенную функцию list
(list.index()
)
list1 = [23, 3, 6, 5, 12, 9, 7, 4]
min_num = min(list1)
index = list1.index(min_num)
Мы можем использовать список и перечислять здесь
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
, ура!
Ваш код выглядит хорошо, но вы забыли вызвать функцию. Добавьте 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
Один из способов, возможно использование min
, emumerate
и lambda
myList = [23, 3, 6, 5, 12, 9, 7, 4]
min(enumerate(myList), key=lambda x:x[1])[0]
#1