リストのリスト: サブリスト全体にわたる予期しない変更について説明
Python では、リストのリストを作成するときに [x] * n を使用すると、その結果、同じ基になるリストへの複数の参照を含むリストが作成されます。この動作により、1 つのサブリストの値を変更すると、すべてのサブリストに予期しない変更が生じる可能性があります。
たとえば、次のコードを考えてみましょう。
xs = [[1] * 4] * 3
このコードは、リストのリストを作成します。 sublist は、4 つの 1 からなる同じ基になるリストを参照します。サブリスト内の要素の 1 つを変更すると、
xs[0][0] = 5
変更はすべてのサブリストに反映されます。これは、リストの元のリストには、3 つの異なるサブリストではなく、同じ基礎となるサブリストへの参照が 3 つしかないために発生します。
異なる値を持つ個別のサブリストを作成するには、リスト内包表記を使用できます。
xs = [[1] * 4 for _ in range(3)]
この場合、リスト内包表記により、リストの新しいリスト内の各要素に対して 4 つの 1 からなる新しいリストが作成され、結果として 3 つの異なるリストが作成されます。サブリスト。
以上が`[x] * n` を使用して作成されたリストの Python リスト内の 1 つのサブリストへの変更がすべてのサブリストに影響するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。