Maison > développement back-end > Tutoriel Python > Comment les itérateurs peuvent-ils aplatir efficacement les listes irrégulièrement imbriquées en Python ?

Comment les itérateurs peuvent-ils aplatir efficacement les listes irrégulièrement imbriquées en Python ?

Patricia Arquette
Libérer: 2024-12-24 22:35:10
original
686 Les gens l'ont consulté

How Can Iterators Efficiently Flatten Irregularly Nested Lists in Python?

Aplatissement d'une liste irrégulière de listes avec des itérateurs

Vous avez mentionné que les solutions existantes pour aplatir les listes imbriquées échouent sur des structures telles que [[[1, 2, 3], [ 4, 5]], 6]. Cette requête explore la faisabilité d'approches alternatives, notamment en utilisant des itérateurs.

L'approche proposée :

La solution suggérée consiste à exploiter les fonctions du générateur pour simplifier le processus d'aplatissement et améliorer les performances. .

Python 2 Implémentation :

from collections import Iterable

def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, basestring):
            for item in flatten(x):
                yield item
        else:
            yield x
Copier après la connexion

Implémentation de Python 3 :

from collections.abc import Iterable

def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, (str, bytes)):
            yield from flatten(x)
        else:
            yield x
Copier après la connexion

Avantages des itérateurs :

  • Les itérateurs conservent la mémoire en générant paresseusement les éléments un par un, plutôt que de stocker l'intégralité de l'objet aplati. list.
  • Les itérateurs empêchent la copie en produisant des références aux éléments d'origine au lieu de créer des valeurs en double.
  • Les itérateurs rendent le code plus lisible, car la fonction génératrice encapsule la logique de navigation dans la structure imbriquée.

Conclusion :

L'approche proposée utilisant Les itérateurs fournissent un moyen efficace et efficient d’aplatir des listes irrégulières de listes. Par rapport à d'autres méthodes, elle résout les cas de profondeurs d'imbrication arbitraires et évite les inconvénients des techniques d'aplatissement récursives ou manuelles.

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