ホームページ >バックエンド開発 >Python チュートリアル >Python でリスト変数を変更すると、それに割り当てられた別の変数にも影響するのはなぜですか?
予期しないリストの突然変異: 参照の影響を理解する
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 サイトの他の関連記事を参照してください。