Maison >développement back-end >Tutoriel Python >Pourquoi les modifications apportées à une sous-liste affectent-elles toutes les sous-listes d'une liste Python de listes créées à l'aide de « [x] * n » ?

Pourquoi les modifications apportées à une sous-liste affectent-elles toutes les sous-listes d'une liste Python de listes créées à l'aide de « [x] * n » ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-05 10:59:41289parcourir

Why Do Changes to One Sublist Affect All Sublists in a Python List of Lists Created Using `[x] * n`?

Liste de listes : explication des modifications inattendues dans les sous-listes

En Python, lors de la création d'une liste de listes, l'utilisation de [x] * n sera aboutir à une liste avec plusieurs références à la même liste sous-jacente. Ce comportement peut entraîner des changements inattendus dans toutes les sous-listes lors de la modification des valeurs dans une sous-liste.

Par exemple, considérons le code suivant :

xs = [[1] * 4] * 3

Ce code crée une liste de listes, où chacune la sous-liste fait référence à la même liste sous-jacente de quatre 1. Lorsque nous modifions l'un des éléments de la sous-liste :

xs[0][0] = 5

Les modifications sont reflétées dans toutes les sous-listes. Cela se produit parce que la liste de listes d'origine ne contient que trois références à la même sous-liste sous-jacente, et non trois sous-listes distinctes.

Pour créer des sous-listes distinctes avec des valeurs distinctes, vous pouvez utiliser une compréhension de liste :

xs = [[1] * 4 for _ in range(3)]

Dans ce cas, la compréhension de liste crée une nouvelle liste de quatre 1 pour chaque élément de la nouvelle liste de listes, ce qui donne trois sous-listes distinctes.

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