Maison > développement back-end > Tutoriel Python > Comment puis-je aplatir efficacement les listes superficielles en Python ?

Comment puis-je aplatir efficacement les listes superficielles en Python ?

Mary-Kate Olsen
Libérer: 2024-12-20 17:56:10
original
904 Les gens l'ont consulté

How Can I Efficiently Flatten Shallow Lists in Python?

Aplatir des listes superficielles avec des itérables en Python

En Python, aplatir une liste superficielle, où chaque élément est lui-même un itérable, peut poser des défis . Cet article explore plusieurs façons d'aplatir efficacement ces listes, en donnant la priorité aux performances et à la clarté du code.

Approches :

  1. Compréhension des listes

    Tenter d'utiliser une compréhension de liste imbriquée peut générer des NameErrors en raison de variables non définies dans la boucle imbriquée :

    [image for image in menuitem for menuitem in list_of_menuitems]
    Copier après la connexion
  2. Réduire avec la fonction Lambda :

    L'utilisation de la réduction avec une fonction lambda offre une solution simple :

    reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
    Copier après la connexion

    Cependant, la lisibilité de cette approche peut souffrir en raison de l'utilisation de list(x).

  3. Itertools.chain()

    Itertools.chain() fournit une méthode efficace et élégante pour aplatir les listes superficielles. Il concatène de manière transparente les itérables en un seul itérable :

    from itertools import chain
    list(chain(*list_of_menuitems))
    Copier après la connexion

    Cette approche évite les copies redondantes et offre des performances comparables à réduire.

  4. Itertools.chain.from_iterable ()

    Pour plus de clarté, pensez à utiliser itertools.chain.from_iterable() :

    chain = itertools.chain.from_iterable([[1,2],[3],[5,89],[],[6]])
    print(list(chain))
    Copier après la connexion

    Cela exprime explicitement l'aplatissement sans utiliser la magie des opérateurs.

Conclusion :

Itertools.chain() et ses variantes offrent des méthodes efficaces et lisibles pour aplatir les listes superficielles, prioriser les performances et le code clarté. Tenez compte du cas d'utilisation spécifique et des préférences de lisibilité lors de la sélection d'une approche.

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