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))にリストを2回確認する必要があります。

于 2012-08-12T16:58:39.440 に答える
1

試す:

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

于 2012-08-12T17:00:36.767 に答える
1

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 に答える