2012-08-12 165 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