あるリストを変更すると別のリストが予期せず変更される理由
Python では、あるリストを変更すると予期せず別のリストに影響を与えるように見える状況によく遭遇します。なぜこれが起こるのかを調べてみましょう。
次のコードを考えてみましょう:
<code class="python">v = [0, 0, 0, 0, 0, 0, 0, 0, 0] vec = v vec[5] = 5</code>
このコードを実行すると、v と vec の両方に次の変更されたリストが表示されます: [0, 0, 0, 0, 0, 5, 0, 0, 0].
説明:
vec と v は別個のリストではなく、メモリ内の同じリストへの参照です。 vec = v を代入しても、新しいリストは作成されません。代わりに、vec に v と同じアドレスを与えることになります。したがって、vec に加えられた変更は、v と vec の両方によって参照される元のリストに直接影響します。
解決策:
単なる参照ではなく v のコピーを作成するには、次の構文を使用する必要があります。
<code class="python">vec = list(v)</code>
list(v) を使用すると、v と同じ要素を持つ新しいリストを作成できます。 v. vec に加えられた変更は v には影響せず、その逆も同様です。
以上がPython で 1 つのリストを変更すると別のリストが変更されたように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。