数字を挿入する際にソートされたリストを維持するためにbisectモジュールを使用しています。 私は9, 2, 5
という3つの数字をこの順番で挿入するつもりです。 このリストの最後の状態は明らかに[2, 5, 9]
ですが、数字がこのリストに挿入されるインデックスリストを見つけることができます。このリストの場合は[1, 2, 0]
となります。だから私が必要とするリストは、ソートが起こった後のインデックス[0,1,2]です。これは、各挿入にbisectが起こっているので、方法が見つからないのです。私はちょうどkey
機能をsorted
の機能と並べ替えることができますが、私は複雑さを増やしたくありません。だから私の質問はこれはbisectモジュールで達成可能ですか?ここで Bisectは挿入されたアイテムのインデックスを保持します
import bisect
lst = []
bisect.insort(lst, 9)
bisect.insort(lst, 2)
bisect.insort(lst, 5)
print lst
編集:もう一つの例は以下のようになり、私はいくつかの空のリストに番号4、7、1、2、9を挿入するつもりです。ソートした後
[4, 7, 1, 2, 9]
# indexes [0, 1, 2, 3, 4], typical enumeration
(のは、最初の私はすでにリスト中の番号を持っていることを、二分なしと仮定しましょう)、
[1, 2, 4, 7, 9]
# now the index list [2, 3, 0, 1, 4]
は、それが複雑さを増すことなく二分で行うことができます。
注:挿入順序は任意ではありません。それは、私がbisectでインデックスを使用しようとする理由です。
何ですか?私はあなたが意味することを理解していません。各挿入が要素の位置を変更する可能性がある場合、記述しているものは存在しません。それぞれの挿入に必要なインデックスを定義する必要があります。あなたは値が挿入されたindecesのシーケンスをしたいですか?そして、これは、「0」(数字「9」がインデックス「0」に挿入された)、「0」(数字「2」が「0」に挿入された)、「1」(数字「5」が位置に挿入された) 「1」)。これがあなたが意味するものでない場合は、ちょうどほんの少し大きい例(3つではなく5つの要素)を使って、正確に何をしたいかを説明してください。 – Bakuriu
@Bakuriuインデックスは、実際にはソートされていないリストのインデックスです。インデックスリストではなく、実際のリストの値を使ってインデックスをソートする必要があります。私はbisectでこれを達成しようとしています。 –