如何在python中返回列表中最小元素的索引

时间:2018-09-23 03:43:51

标签: python

在我的代码中,使用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))

非常感谢。

4 个答案:

答案 0 :(得分:1)

您可以使用min(list)listlist.index())的内置功能

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

答案 1 :(得分:0)

一种方式,可以使用minemumeratelambda

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

答案 2 :(得分: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

答案 3 :(得分: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迭代indexitem时,我们可以做的就是检查每个item v min(list1)是否匹配我们可以将min_idx变量设置为该index中相应的item,加油!