Maison >développement back-end >Tutoriel Python >Comment la compréhension des listes imbriquées aplatit-elle une liste en Python ?

Comment la compréhension des listes imbriquées aplatit-elle une liste en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 06:07:12227parcourir

How Does Nested List Comprehension Flatten a List in Python?

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!

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