python - 从列表中获取项目编号

时间:2012-08-12 16:56:55

标签: python list numbers int

我刚问了以下问题:

Python - find integer closest to 0 in list

最佳答案是使用:min(lst, key=abs)

该代码从列表中返回该项目。

如何从列表中获取数字项? (即2代替-18

4 个答案:

答案 0 :(得分:4)

您需要使用索引来扩充您的列表:

min(enumerate(lst), key=lambda x: abs(x[1]))

它会返回索引最接近零的值,如果您只需要索引,请使用[0]

在你的例子上:

>>> example = [237, 72, -18, 237, 236, 237, 60, -158, -273, -78, 492, 243]
>>> min(enumerate(example), key=lambda x: abs(x[1]))
(2, -18)
>>> min(enumerate(example), key=lambda x: abs(x[1]))[0]
2

这非常有效(最坏情况为O(n));你也可以使用example.index(min(example, key=abs)),但在最坏的情况下(O(2n))必须经过两次。

答案 1 :(得分:1)

尝试:

lst.index(min(lst, key=abs))

答案 2 :(得分:1)

一种方法是在找到想要查找的整数后,可以使用“index”...

result = min(lst, key=abs)
index = lst.index(result)
print(index) # prints 2

答案 3 :(得分:1)

>>> lst = [237, 72, -18, 237, 236, 237, 60, -158, -273, -78, 492, 243]
>>> lst.index(min(lst, key=abs))
2