Python でリストを操作する場合、予期しない動作が発生する可能性があります。あるリストを変更すると、別のリストに予期せぬ影響が及ぶ理由を理解しましょう。
問題:
次の Python コードを考えてみましょう:
<code class="python">v = [0, 0, 0, 0, 0, 0, 0, 0, 0] vec = v # Assignment by reference vec[5] = 5</code>
このコードが実行された後、 v と vec はどちらもインデックス 5 で変更された値を示します:
>>> print(vec) [0, 0, 0, 0, 0, 5, 0, 0, 0] >>> print(v) [0, 0, 0, 0, 0, 5, 0, 0, 0]
明示的に変更されていないのに v が変化するのはなぜですか?
問題の理解:
Python では、リストを新しい変数に代入するとき、コピーを作成するわけではありません。代わりに、参照を作成しています。これは、v と vec の両方がメモリ内の同じ基になるリスト オブジェクトを指していることを意味します。
解決策:
同じ値を持つ 2 つの別々のリストを作成するには、次のようにする必要があります。 list() コンストラクターを使用したコピー:
<code class="python">vec = list(v) # Creates a copy</code>
これで、vec に変更を加えても、v は影響を受けません。
以上がPython で 1 つのリストを変更すると別のリストに影響を与えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。