ホームページ >バックエンド開発 >Python チュートリアル >`[x] * n` を使用して作成されたリストの Python リスト内の 1 つのサブリストへの変更がすべてのサブリストに影響するのはなぜですか?

`[x] * n` を使用して作成されたリストの Python リスト内の 1 つのサブリストへの変更がすべてのサブリストに影響するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-05 10:59:41339ブラウズ

Why Do Changes to One Sublist Affect All Sublists in a Python List of Lists Created Using `[x] * n`?

リストのリスト: サブリスト全体にわたる予期しない変更について説明

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

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