我需要实现一个函数,该函数返回列表最大值的索引。我写了那个,但是不行。有人可以告诉我为什么吗?
def maximum_index(lst):
maximum=0
index=0
for i,value in enumerate(lst):
if value>maximum:
maximum=value
index=i
return index
答案 0 :(得分:0)
您的代码对我来说似乎还不错。我认为唯一的问题是您的缩进,并且您只检查正值。缩进的方式是功能之外的所有内容。
我还添加了Chris_Rands建议,以检查列表是否为空开始。在这里,您去了:
def maximum_index(lst):
if not lst:
return None
first = True
maximum=0
index=0
for i,value in enumerate(lst):
if value > maximum or first:
first = False
maximum = value
index = i
return index
答案 1 :(得分:0)
使用max内置函数查找最大值,并使用index方法查找索引:
def maximum_index(lst):
if (not lst):
return None
return lst.index(max(lst))
测试:
print(maximum_index([1, 2, 3, 9, 8, 7, 6]))
print(maximum_index([]))
输出:
3
None
答案 2 :(得分:0)
更好的方法是直接使用max:
max(enumerate(lst), key=lambda pair: pair[1], default=(None, None))[0]
enumerate
产生列表的(idx, value)
元组,key
仅基于value
检查最大值,然后[0]
抓取{{ 1}}来自idx
答案 3 :(得分:0)
如果@Ayxan建议您不允许使用max
和index
,则应假设第一个元素是为最大值,并开始循环。然后进行相应的更新。
def maximum_index(lst):
if not lst: # check if list is empty
return None
# initialize maximum and index
index = None
maximum = lst[0]
# loop and update
for i, value in enumerate(lst):
if value > maximum:
maximum = value
index = i
# return index
return index
alist = [5, 6, 1, 199, -1, 0, 12]
print(maximum_index(alist))
print(maximum_index([]))