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
Libérer: 2024-12-04 06:07:12
original
219 Les gens l'ont consulté

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]
Copier après la connexion

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]
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal