从lis中求最大元素索引

2024-07-05 11:48:20 发布

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

让v成为一个数字列表

v = [3,5,2,4,8,6,1]

为什么下面查找max元素及其索引的代码会出错?(“int”对象不可订阅)

reduce(lambda x,y: max(x[1],y[1]), enumerate(v))

另外,我知道还有其他方法可以做到,比如下面的方法,但是我想知道为什么前面的方法不起作用。

max(enumerate(v), key= lambda x: x[1])

结语

Simeon指出我的代码确实错了,因为lambda应该返回一个元组,而不是一个数字。理解了这一点,我的代码可以通过以下方式轻松修复:

reduce(lambda x,y: x[1]<y[1] and y or x, enumerate(v))

顺便说一下,这比

max(enumerate(v), key= lambda x: x[1])

Tags: 对象方法lambdakey代码元素reduce列表