ホームページ >バックエンド開発 >Python チュートリアル >Python でリスト変数を変更すると、それに割り当てられた別の変数にも影響するのはなぜですか?

Python でリスト変数を変更すると、それに割り当てられた別の変数にも影響するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 18:55:30805ブラウズ

Why Does Modifying a List Variable in Python Also Affect Another Variable Assigned to It?

予期しないリストの突然変異: 参照の影響を理解する

Python では、リスト変数はメモリに格納されている配列への参照を表します。あるリスト変数を別のリスト変数に代入するとき (例: vec = v)、実際に起こっていることは、配列自体をコピーするのではなく、配列のアドレスが渡されることです。

これは、1 つのリストに加えられた変更は、同じメモリ アドレスを指す他のリストにも影響します。たとえば、次のコードについて考えてみます。

<code class="python">v = [0,0,0,0,0,0,0,0,0]
vec = v
vec[5] = 5</code>

上記のコードを実行すると、v と vec の両方に次の値が含まれます。

[0, 0, 0, 0, 0, 5, 0, 0, 0]

これは、vec と v が両方とも参照しているために発生します。メモリ内の同じ配列。 vec のインデックス 5 の値が 5 に変更されると、両方の変数が同じ基になる配列を指すため、その変更は vec だけでなく v にも反映されます。

リストの真のコピーを作成するには、以下に示すように、元のリストを引数として copy() メソッドまたは list() コンストラクターを使用します。

<code class="python">vec = v.copy()
vec = list(v)</code>

以上がPython でリスト変数を変更すると、それに割り当てられた別の変数にも影響するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。