a = 132
b = [0, 10, 30, 60, 100, 150, 210, 280, 340, 480, 530]
a順序付けされたリストの 6 番目の位置にある必要があることを知りたいですb。
そうするための最もpythonicな方法は何ですか?
a = 132
b = [0, 10, 30, 60, 100, 150, 210, 280, 340, 480, 530]
a順序付けされたリストの 6 番目の位置にある必要があることを知りたいですb。
そうするための最もpythonicな方法は何ですか?
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]。
バイセクトを使用します。これは最も美しいAPIではありませんが、まさに必要なものです。
bisect.bisect必要なものを正確に返す、を使用することをお勧めします。