0

タイトルからして、これは簡単に聞こえるかもしれません。このタスクのためではありません。

次のシナリオを想像してください: 接続が実行されていて、example というリストがあります。常に1から始まり、接続が閉じられるまで増加する定数xのデータを取得します。この数値を囲むデータが必要であり、それを正確にその数値の位置にリストに格納する必要があります。そうexample[x-1]。わかりました、これで基本的な問題は解決しました。

これで解決しない問題は、たとえば、接続によって、以前に保存されたデータの一部が不要になったため削除するコマンドが与えられた場合です。この時点で、リストに 10 個のアイテムがあり、3、5、および 6 の位置を削除する必要があるとしましょう。つまり、例は 7 です。x は 11 になり、データを挿入すると、exampleの長さになります。は 8 です。この時点で、exmaple[x-1] != 11. これで、断片化が発生しました。

問題はこれです。接続は(ただし、決まった順序ではありませんが)他のデータを提供します。このデータも と同じ番号になりxますが、 としますy。このデータは一緒にする必要があります (実際には、クラスで不足しているものを埋めていますが、この例の目的のために追加する必要があるのは int であるxとしましょう)。yしかし、データ シーケンスの後の時点で、データの 2 つの部分をまとめる x-1 がなくなりました。現在の問題は、設定することができずexample[x]常に正確に の位置xexampleあるため、実行時に と の両方の位置に一致させる方法がないことxですy

私の質問は、C++ のような方法でできることはありますか?それは、アイテムの削除など、リスト内の変更内容に応じてexample[x] = data;、常に位置に関係なく行われます。これが不可能な場合は、常に一致するようxに、リストの位置の数式を計算することに力を入れます。example

4

1 に答える 1

1
example = {}
example[1] = "whatever"
example[99] = "whatever"
example[-12] = "something else"
example['cow'] = 'pie'
#delete
example.pop(99)

それはあなたが探しているものですか?

また

example = [0 for _ in range(MAX_ITEMS)]
#delete
example[x-1] = 0
#add
example[x-1] = data
于 2013-11-04T23:16:35.870 に答える