2012-08-12 169 views

回答

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

注意,这有通过两次清单。 – 2012-08-12 17:23:28

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

尝试:

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

1

一种方法是找到你想要找的整数后,你可以用 “指数” ......

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