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
必要なものを正確に返す、を使用することをお勧めします。