ホームページ >バックエンド開発 >Python チュートリアル >Python で新しい変数にリストを代入しても別のコピーが作成されないのはなぜですか?
予期しないリストの突然変異
v = [0,0,0,0,0,0,0,0 のようなリストを作成する場合,0] の場合、新しいリストを変数に代入すると別の参照が作成されると考えるかもしれません。ただし、次のようなコードは予期しない動作を示す可能性があります:
<code class="python">vec = v vec[5] = 5</code>
vec と v の両方のインデックス 5 に値 5 が含まれています。なぜこれが起こるのですか?
参照の割り当て
Python では、リストは変更可能なオブジェクトです。 vec = v を代入しても、リストの新しいコピーは作成されません。代わりに、v への参照を割り当てます。vec と v は両方とも、メモリ内の同じ基になるリスト オブジェクトを指します。
vec または v のいずれかに加えられた変更は、同じリストであるため、元のリストに影響します。これが、vec[5] が変更されると v も変更される理由です。
解決策
リストの別のコピーを作成するには、 list() 関数を使用します。
<code class="python">vec = list(v)</code>
これにより、v の要素のコピーを含む新しいリスト オブジェクトが作成されます。vec に加えられた変更は v には影響しません。その逆も同様です。
以上がPython で新しい変数にリストを代入しても別のコピーが作成されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。