清单最大值的索引

时间:2018-11-17 14:36:20

标签: python

我需要实现一个函数,该函数返回列表最大值的索引。我写了那个,但是不行。有人可以告诉我为什么吗?

def maximum_index(lst):
    maximum=0
    index=0
    for i,value in enumerate(lst):
        if value>maximum:
            maximum=value
            index=i
    return index

4 个答案:

答案 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建议您不允许使用maxindex,则应假设第一个元素为最大值,并开始循环。然后进行相应的更新。

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([]))