在我的代码中,使用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)
您可以使用min(list)
和list
(list.index()
)的内置功能
list1 = [23, 3, 6, 5, 12, 9, 7, 4]
min_num = min(list1)
index = list1.index(min_num)
答案 1 :(得分:0)
一种方式,可以使用min
,emumerate
和lambda
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
迭代index
和item
时,我们可以做的就是检查每个item
v min(list1)
是否匹配我们可以将min_idx
变量设置为该index
中相应的item
,加油!