反復中のリスト要素の変更: 結果を理解する
Python では、反復中にリストから要素を削除しようとすると、次のような問題が発生する可能性があります。予想外の結果。以下のコードに示されているように、すべての項目が正常に削除されるわけではありません。
<code class="python">letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'] for i in letters: letters.remove(i) print(letters)</code>
説明
反復中、Python は内部カウンターを維持して、リスト内の現在の位置。要素がリストから削除されても、カウンターは自動的には更新されません。したがって、要素が偶数インデックスで削除されると、カウンタは次の奇数インデックスに進みます。これにより、削除プロセス中に他のすべての要素がスキップされます。
リスト要素を安全に削除する方法
反復中にリストから要素を安全に削除するには、反復する必要があります。代わりにリストのコピーを上書きします。これは、スライス構文 [:] を使用して元のリストのコピーを作成することで実現できます:
<code class="python">letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'] for i in letters[:]: if i % 2 == 0: # Remove elements at even indices letters.remove(i) print(letters)</code>
代替削除方法
途中でリストを変更する代わりに
結論
反復中にリストを変更する場合、元のリストを直接使用しないことが重要です。代わりに、コピーを作成するか、代替方法を使用することで、すべての要素が正しく処理され、予期しない動作が回避されます。
以上がPython での反復中にリストから要素を削除しても安全ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。