ホームページ >バックエンド開発 >Python チュートリアル >Python でリスト乗算を使用する場合、1 つのサブリストを変更するとすべてのサブリストに影響するのはなぜですか?
Python では、[[1] 4] 3、1 つのサブリストへの変更がすべてのサブリストに影響する状況が発生します。この動作は直感に反し、予期しない結果を招く可能性があります。
説明リスト乗算を使用する場合、新しいリストは元のリストへの参照になります。新しいリストの要素を変更すると、実際には、すべてのサブリストによって参照される元のリストの要素が変更されます。この予期しない動作は、Python がリスト内包表記の前に乗算演算子を評価するために発生します。 。この場合、[[1] 4] は 1 つのサブリストに評価され、 * 単純にそのサブリストへの 3 つの参照を作成します。
解決策この動作を回避し、3 つの独立したサブリストを作成するにはサブリストでは、次のようにリスト内包表記を使用できます。[[1] * 4 for _ in range(3)]リスト内包表記各サブリストの [1] * 4 式を再評価し、リンクされていない 3 つの異なるサブリストが生成されます。リスト乗算との比較リスト乗算はリストを作成する便利な方法です。繰り返し要素がある場合は、その制限を理解することが重要です。リスト乗算は、式を参照せずに既存のオブジェクトに対して実行されます。オブジェクトのコピーを作成するのではなく、既存のオブジェクトへの参照を作成します。対照的に、リスト内包表記は各要素の式を再評価し、必要に応じて新しいオブジェクトを作成します。この動作により、リスト内の各要素が独立していることが保証されます。追加リソース
以上がPython でリスト乗算を使用する場合、1 つのサブリストを変更するとすべてのサブリストに影響するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。