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 ?
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!