Python: コピー変数の変更が元の変数に影響する理由
Python では、コピーに変更を加えた場合に特有の動作が発生する場合があります。変数は元の変数も変更するようです。これは、Python 変数が実際の値ではなく参照を保存するために発生します。
これを理解するには、次の状況を考慮してください。
org_list = ['y', 'c', 'gdp', 'cap'] copy_list = org_list # Pass reference to org_list copy_list.append('hum') print(copy_list) # ['y', 'c', 'gdp', 'cap', 'hum'] print(org_list) # ['y', 'c', 'gdp', 'cap', 'hum']
copy_list を org_list に割り当てる場合、新しいリストは作成されません。むしろ、メモリ内の同じリスト オブジェクトへの参照を確立します。したがって、copy_list または org_list への変更は両方の変数に直接影響します。
真に独立したコピーを作成するには、参照ではなく実際のデータのコピーを渡す必要があります。これは、スライス代入演算子を使用して実行できます。
copy_list = org_list[:] # Create a deep copy by slicing
元のリストをスライスすることで、データの独自のコピーを持つ新しいリスト オブジェクトを作成します。 copy_list に加えられた変更は org_list には影響しません。また、その逆も同様です。
以上がPython でコピー変数を変更すると元の変数に影響するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。