0

我刚刚问了以下问题:

Python - 在列表中查找最接近 0 的整数

最好的答案是使用:min(lst, key=abs).

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

如何从列表中获取项目编号?(即2代替-18

4

4 回答 4

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))必须通过列表两次。

于 2012-08-12T16:58:39.440 回答
1

尝试:

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

于 2012-08-12T17:00:36.767 回答
1

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

result = min(lst, key=abs)
index = lst.index(result)
print(index) # prints 2
于 2012-08-12T17:01:16.243 回答
1
>>> lst = [237, 72, -18, 237, 236, 237, 60, -158, -273, -78, 492, 243]
>>> lst.index(min(lst, key=abs))
2
于 2012-08-12T17:01:49.887 回答