在Python中返回数组中最大元素的索引

2024-10-01 13:39:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个返回数组最大元素的函数,我觉得我有正确的代码,但我的语法顺序错误,我试图使用for/while循环来实现这一点。到目前为止,我有以下情况:

def manindex(arg):

    ans = 0

    while True:
    for i in range (len(arg)):
        if arg[i] > arg[ans]:
            pass

            ans = i

    return ans

不知道我哪里出错了,如果有人能提供一些指导,谢谢

编辑:所以它指出我造成了一个无限循环,所以如果我去掉剩下的while语句

^{pr2}$

但我觉得还是不对


Tags: 函数代码true元素for顺序def错误
3条回答

当你说array我想你的意思是Python中的list时,根本不需要for/loop或while/loop来实现这一点。在

也可以将索引max一起使用,如下所示:

xs.index(max(xs))

样品:

^{pr2}$

找到最大索引的思想始终是一样的,迭代数组的元素,与我们现在的最大值比较,如果更好,当前元素的索引现在是最大值,如果不是,我们继续寻找。在

enumerate方法

def max_element_index(items):
    max_index, max_value = None, None
    for index, item in enumerate(items):
        if item > max_value:
             max_index, max_value = index, item
    return max_index

功能方法

^{pr2}$

函数式方法使用reduce函数,它接受两个元素,并决定什么是还原。这些元素是元组(index,element),它们是enumerate函数的结果。在

在lambda主体上定义的reduce函数接受两个元素并返回最大的元组。由于reduce函数减少到只遇到结果中的一个元素,champion是包含最大和最大元素索引的元组,因此我们只需要访问元组的0索引就可以得到元素。在

另一方面,如果列表为空,则不返回任何对象,这是在reduce函数的第三个参数上授予的。在

您可以使用max,并将key参数设置为seq.__getitem__

def argmax(seq):
    return max(range(len(seq)), key=seq.__getitem__)

print(argmax([0,1,2,3,100,4,5]))

收益率

^{pr2}$

相关问题 更多 >