Compréhension de liste imbriquée : décomposer la syntaxe
En Python, la compréhension de liste est un moyen concis de générer une nouvelle liste basée sur une liste existante. un. Cependant, lorsqu'il s'agit de compréhensions de listes imbriquées, la syntaxe peut devenir un peu déroutante.
Considérez l'extrait suivant :
a = [[1,2],[3,4],[5,6]] b = [x for xs in a for x in xs]
Ce code transforme la liste imbriquée a en une liste aplatie b. contenant tous les éléments de a. Pour comprendre comment cela fonctionne, décomposons la syntaxe :
[x for xs in a for x in xs]
Il s'agit d'une compréhension imbriquée à deux niveaux. Cela dit essentiellement :
# Loop over the outer list for xs in a: # Loop over the inner list for x in xs: # Add x to the new list b b.append(x)
En d'autres termes, il parcourt d'abord la liste externe a, attribue chaque sous-liste à la variable xs, puis parcourt la sous-liste, attribuant chaque élément à la variable x. Pour chaque élément x, il l'ajoute à la nouvelle liste b.
Ce processus de déroulement suit l'ordre dans lequel les boucles sont écrites : la boucle la plus externe varie le plus lentement, suivie des boucles internes. Il s'agit du principe du « Right One » mentionné dans PEP202, qui dit que les compréhensions doivent être écrites avec l'index qui varie le plus rapidement sur la boucle la plus interne.
En comprenant ce principe, vous pouvez déchiffrer en toute confiance même les compréhensions de listes imbriquées complexes. .
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!