Maison  >  Article  >  développement back-end  >  Pourquoi la modification d'un élément de liste imbriquée en Python affecte-t-elle toutes ses copies ?

Pourquoi la modification d'un élément de liste imbriquée en Python affecte-t-elle toutes ses copies ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 01:44:29455parcourir

Why Does Modifying a Nested List Element in Python Affect All Its Copies?

Indices de listes imbriquées : interprétation du comportement basé sur les références de Python

En Python, les listes sont traitées comme des structures de données mutables basées sur des références. Cette caractéristique constitue un piège potentiel lorsque vous travaillez avec des listes imbriquées, comme le démontre l'extrait de code suivant :

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

La création d'une liste imbriquée comme celle-ci crée quatre références à la même liste sous-jacente. De ce fait, toute modification apportée à l’une des références affecte toutes les autres du fait de leur caractère partagé. Ce comportement est évident dans le code fourni, où le résultat attendu :

<code class="python">[0, 0, 0, 0]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]</code>

Conflits avec le résultat réel :

<code class="python">[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]</code>

Pour éviter ce piège, il est recommandé de créer une nouvelle liste instance pour chaque sous-liste en utilisant une approche de compréhension :

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

Cette approche garantit que chaque sous-liste est indépendante, résolvant le problème et produisant le résultat souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn