Maison >développement back-end >Tutoriel Python >Pourquoi la modification d'une sous-liste affecte-t-elle toutes les sous-listes lors de l'utilisation de la multiplication de liste en Python ?
En Python, création d'une liste de listes à l'aide de la multiplication de liste, comme dans [[1] 4] 3, aboutit à une situation où les modifications apportées à une sous-liste affectent toutes les sous-listes. Ce comportement est contre-intuitif et peut entraîner des conséquences inattendues.
Lors de l'utilisation de la multiplication de liste, la nouvelle liste est une référence à la liste d'origine. Lorsque vous modifiez un élément de la nouvelle liste, vous modifiez en réalité l'élément de la liste d'origine qui est référencé par toutes les sous-listes.
Ce comportement inattendu se produit car Python évalue l'opérateur de multiplication avant la compréhension de la liste. . Dans ce cas, [[1] 4] évalue une seule sous-liste et * crée simplement trois références à cette sous-liste.
Pour éviter ce comportement et créer trois références indépendantes sous-listes, vous pouvez utiliser une compréhension de liste, comme suit :
[[1] * 4 for _ in range(3)]
La compréhension de liste réévalue le [1] * 4 expressions pour chaque sous-liste, ce qui donne trois sous-listes distinctes qui ne sont pas liées.
Bien que la multiplication de liste soit un moyen pratique de créer des listes avec des éléments répétitifs, elle est importante pour comprendre ses limites. La multiplication de liste opère sur des objets existants sans voir les expressions. Il ne fait pas de copies d'objets mais crée à la place des références à des objets existants.
En revanche, les compréhensions de listes réévaluent les expressions de chaque élément, créant de nouveaux objets si nécessaire. Ce comportement garantit que chaque élément de la liste est indépendant.
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!