【发布时间】:2012-08-09 01:47:49
【问题描述】:
我刚刚问了以下问题:
Python - find integer closest to 0 in list
最好的答案是使用:min(lst, key=abs)。
该代码返回列表中的项目。
如何从列表中获取项目 number? (即2 而不是-18)
【问题讨论】:
我刚刚问了以下问题:
Python - find integer closest to 0 in list
最好的答案是使用:min(lst, key=abs)。
该代码返回列表中的项目。
如何从列表中获取项目 number? (即2 而不是-18)
【问题讨论】:
您需要使用索引来扩充您的列表:
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))必须遍历列表两次。
【讨论】:
>>> lst = [237, 72, -18, 237, 236, 237, 60, -158, -273, -78, 492, 243]
>>> lst.index(min(lst, key=abs))
2
【讨论】:
试试:
lst.index(min(lst, key=abs))
【讨论】:
一种方法是在找到要查找的整数后,可以使用“索引”...
result = min(lst, key=abs)
index = lst.index(result)
print(index) # prints 2
【讨论】: