ホームページ > バックエンド開発 > Python チュートリアル > Python で 1 つのリストを変更すると別のリストが変更されたように見えるのはなぜですか?

Python で 1 つのリストを変更すると別のリストが変更されたように見えるのはなぜですか?

Patricia Arquette
リリース: 2024-11-02 13:05:30
オリジナル
970 人が閲覧しました

Why Does Modifying One List Seem to Change Another in Python?

あるリストを変更すると別のリストが予期せず変更される理由

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

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