ホームページ >バックエンド開発 >Python チュートリアル >Python で新しい変数にリストを代入しても別のコピーが作成されないのはなぜですか?

Python で新しい変数にリストを代入しても別のコピーが作成されないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 07:43:30550ブラウズ

Why does assigning a list to a new variable in Python not create a separate copy?

予期しないリストの突然変異

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 サイトの他の関連記事を参照してください。

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