Python で「vec」を変更すると「v」も変更されるのはなぜですか?

DDD
リリース: 2024-11-03 04:08:31
オリジナル
210 人が閲覧しました

Why Does Modifying 'vec' Also Change 'v' in Python?

リストと参照: Python での変数の割り当てを理解する

Python では、リストを参照する変数が予期しない動作を示すことがあります。次のコードを考えてみましょう:

<code class="python">v = [0] * 9
vec = v  # Assign v's address to vec
vec[5] = 5  # Modify vec at index 5
print(v)  # Also prints [0, 0, 0, 0, 0, 5, 0, 0, 0]</code>
ログイン後にコピー

驚くべきことに、'v' を出力すると、それも変更されたことがわかります。この動作は最初は混乱するかもしれません。

「v」はなぜ変化するのですか?

「v」が変化する理由は、vec と v が両方とも参照であるためです。 vec = v を代入しても、新しいリストは作成されません。代わりに、メモリ ポインタである v のアドレスを vec に割り当てるだけです。

結果として、vec と v は両方ともメモリ内の同じリストを指します。どちらかの変数に加えられた変更は基になるリストに影響します。そのため、「vec」が変更されると「v」も変更されます。

個別のリストの作成

作成するには2 つの別々のリストがある場合は、浅いコピーを実行する必要があります。

<code class="python">vec = list(v)</code>
ログイン後にコピー

これにより、「v」と同じ値を持つ新しいリストが作成されますが、それは別のメモリ場所に保存されます。現在、「vec」を変更しても「v」には影響しません。

以上がPython で「vec」を変更すると「v」も変更されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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