ホームページ >バックエンド開発 >Python チュートリアル >Python でネストされたリスト要素を変更すると、そのすべてのコピーが影響を受けるのはなぜですか?
ネストされたリストのインデックス: Python の参照ベースの動作の解釈
Python では、リストは変更可能な参照ベースのデータ構造として扱われます。次のコード スニペットで示されているように、この特性により、入れ子になったリストを操作するときに潜在的な落とし穴が生じます。
<code class="python">some_list = 4 * [(4 * [0])]</code>
このように入れ子になったリストを作成すると、同じ基になるリストへの参照が 4 つ作成されます。その結果、参照の 1 つに加えられた変更は、共有の性質により他のすべての参照に影響します。この動作は、提供されたコードで明らかです。期待される出力:
<code class="python">[0, 0, 0, 0] [0, 1, 1, 1] [0, 1, 1, 1] [0, 1, 1, 1]</code>
実際の出力と競合します:
<code class="python">[0, 1, 1, 1] [0, 1, 1, 1] [0, 1, 1, 1] [0, 1, 1, 1]</code>
この問題を回避するには、新しいリストを作成することをお勧めします。内包アプローチを使用して各サブリストのインスタンスを作成します。
<code class="python">some_list = [(4 * [0]) for _ in range(4)]</code>
このアプローチにより、各サブリストが独立していることが保証され、問題が解決され、意図した出力が生成されます。
以上がPython でネストされたリスト要素を変更すると、そのすべてのコピーが影響を受けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。