Maison > développement back-end > Tutoriel Python > Pourquoi la modification d'un élément de liste imbriquée affecte-t-elle toutes les sous-listes en Python ?

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

Barbara Streisand
Libérer: 2024-11-02 04:34:02
original
356 Les gens l'ont consulté

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

Indices de liste imbriquées

Lorsque vous travaillez avec des listes imbriquées en Python, il est important de comprendre le concept de références de liste et son impact sur les indices de liste. .

Liste des références

Contrairement à de nombreux programmes langages qui transmettent des variables par valeur, Python transmet des listes par référence. Cela signifie que l'attribution d'une liste à une autre variable crée une référence au même objet de liste sous-jacent en mémoire.

Indices de liste imbriqués

Dans le code fourni, le problème se pose de l'utilisation de la multiplication de liste. La ligne some_list = 4 * [(4 * [0])] crée quatre références au même objet de liste, ce qui signifie que les modifications apportées à l'une des sous-listes affecteront les quatre.

Résultats attendus

Les résultats attendus sont :

[0, 0, 0, 0]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
Copier après la connexion

Réels Résultats

Les résultats réels sont :

[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
Copier après la connexion

Solution

Pour éviter ce problème, utilisez une boucle pour créer une liste imbriquée sans créer plusieurs références à la même liste. Le code corrigé est :

some_list = [(4 * [0]) for _ in range(4)]
Copier après la connexion

Cette boucle crée quatre listes indépendantes, chacune avec quatre zéros, garantissant que le comportement attendu est atteint.

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