30
a = 132

b = [0, 10, 30, 60, 100, 150, 210, 280, 340, 480, 530]

a順序付けされたリストの 6 番目の位置にある必要があることを知りたいですb

そうするための最もpythonicな方法は何ですか?

4

3 に答える 3

40

bisectは、このタスクに最適な Python 標準ライブラリのモジュールです。bisectモジュール内の関数はbisect、値の挿入ポイントのインデックスを提供します。

コード例を挙げましょうbisect

from bisect import bisect
a = 132
b = [0, 10, 30, 60, 100, 150, 210, 280, 340, 480, 530]
print(bisect(b, a))

結果は5、リストが 0 ベースであるため、実際には 6 番目の位置になります。

あなたが知ることができるのは、結果を に使用することですinsert

index = bisect(b, a)
b.insert(index, a)

または中間変数なし

b.insert(bisect(b, a), a)

bになります[0, 10, 30, 60, 100, 132, 150, 210, 280, 340, 480, 530]

于 2012-07-02T09:16:10.477 に答える
29

バイセクトを使用します。これは最も美しいAPIではありませんが、まさに必要なものです。

bisect.bisect必要なものを正確に返す、を使用することをお勧めします。

于 2012-07-02T09:12:32.750 に答える