ホームページ  >  記事  >  バックエンド開発  >  Python で 1 つのネストされたリストを変更すると他のリストに影響を与えるのはなぜですか?

Python で 1 つのネストされたリストを変更すると他のリストに影響を与えるのはなぜですか?

DDD
DDDオリジナル
2024-11-01 05:18:02796ブラウズ

Why Do Modifications to One Nested List Affect Others in Python?

ネストされたリストのインデックスの問題が解決されました

Python でネストされたリストを扱うとき、既知のリストの受け渡し方法を理解することが重要です。 「参照渡し」として。通常、変数は値を独立して保持しますが (「値渡し」)、リストは効率上の理由からメモリ アドレスによって渡されます (「参照渡し」)。

たとえば、4 * [0] があるとします。の場合、メモリ内に同じ 0 値への 4 つのポインタを作成します。ただし、これらのリストの 1 つを変更すると、その変更は他のすべてのリストに反映されます。これは、それらがすべて同じ基礎となるメモリの場所を指しているためです。

この例では、4 つの [(4 [0])] があり、これは内部の 4 つのコピーを作成することを意味します。 4 つのゼロを含むリスト。ループ内で some_listi 1 を変更すると、実際にはそのメモリ位置にある基になるリストが変更され、結果として 4 つのリストすべてが影響を受けます。

これを解決するには、2 回目の乗算を避け、ループを使用して新しいリストを作成します。リストのリスト:

<code class="python">some_list = [(4 * [0]) for _ in range(4)]</code>

これにより、それぞれに 4 つのゼロが含まれる 4 つの異なるリストが作成され、複数のリストに対する予期しない変更が防止されます。

以上がPython で 1 つのネストされたリストを変更すると他のリストに影響を与えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。