一意の文字列を含むリストがあります。特定の文字列 (リストにある場合) をこのリストから削除したいのですが、リスト内の他のすべての要素のインデックスは変更したくありません。
したがって、指定された(および見つかった)文字列をNone
.
そうするための最も効率的な方法は何ですか?リストの理解について考えましたが、1 つの要素だけでは少しやり過ぎではないでしょうか?
一意の文字列を含むリストがあります。特定の文字列 (リストにある場合) をこのリストから削除したいのですが、リスト内の他のすべての要素のインデックスは変更したくありません。
したがって、指定された(および見つかった)文字列をNone
.
そうするための最も効率的な方法は何ですか?リストの理解について考えましたが、1 つの要素だけでは少しやり過ぎではないでしょうか?
リストの基本が役立つ場合があります。
In [211]: L = list('abcde')
In [212]: L
Out[212]: ['a', 'b', 'c', 'd', 'e']
In [213]: i = L.index('c')
In [214]: L[i] = None
In [215]: L
Out[215]: ['a', 'b', None, 'd', 'e']
index
単に割り当てるだけではなく、最初に出現したインデックスを提供します。
要素を見つける必要がある場合、選択する方法は O(n) または O(log(n)) (利用可能な場合) のいずれかになります。要素のインデックスがわかれば、要素の置換は一定時間の操作です。
本当の問題は、実際にリストが必要かどうかです。順序が必要ない場合は、セットを使用します。この場合、ルックアップと挿入は O(n) です。順序が必要で、物事を交換したい場合は、ツリーまたはヒープ構造を検討してください。
Python のリストは、リンクされた構造体ではなく、配列に裏打ちされているという情報を見逃している可能性があります。