Maison > Article > développement back-end > Pourquoi la modification d'un élément de liste imbriquée affecte-t-elle toutes les sous-listes en 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]
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]
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)]
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!