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