ネストされたリストのインデックスの問題が解決されました
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 サイトの他の関連記事を参照してください。