ホームページ > バックエンド開発 > Python チュートリアル > Python でネストされたリスト要素を変更すると、そのすべてのコピーが影響を受けるのはなぜですか?

Python でネストされたリスト要素を変更すると、そのすべてのコピーが影響を受けるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-31 01:44:29
オリジナル
564 人が閲覧しました

Why Does Modifying a Nested List Element in Python Affect All Its Copies?

ネストされたリストのインデックス: 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート