Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-10-31 01:44:29
original
581 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal