Maison > développement back-end > Tutoriel Python > Quel est le moyen le plus efficace d'aplatir une liste superficielle en Python ?

Quel est le moyen le plus efficace d'aplatir une liste superficielle en Python ?

Barbara Streisand
Libérer: 2024-12-16 14:04:14
original
330 Les gens l'ont consulté

What's the Most Efficient Way to Flatten a Shallow List in Python?

Aplatir des listes superficielles en Python

Aplatir une liste superficielle d'itérables est une opération courante en Python. Bien qu'il existe plusieurs approches, chacune offre des performances et une lisibilité variables.

1. Compréhension de liste

Une compréhension de liste imbriquée peut sembler aplatir une liste, mais elle entraîne une NameError puisque la variable utilisée dans la compréhension externe (par exemple, menuitem) n'est pas définie.

2. réduire

La fonction de réduction permet d'aplatir en utilisant list.__add__ comme opération de réduction. Cependant, cette méthode nécessite un appel list(x) supplémentaire pour convertir les objets Django QuerySet en listes.

3. itertools.chain

La fonction itertools.chain fournit une option plus efficace pour l'aplatissement des listes. Il utilise un générateur pour produire des éléments des itérables, évitant ainsi le besoin de copie ou de compréhension de liste.

Exemple de code :

import itertools

list_of_menuitems = [['image00', 'image01'], ['image10'], []]

# Flatten using list comprehension (not recommended)
# [image for image in menuitem for menuitem in list_of_menuitems]

# Flatten using reduce
# reduce(list.__add__, (list(mi) for mi in list_of_menuitems))

# Flatten using itertools.chain
flattened_list = list(itertools.chain(*list_of_menuitems))
Copier après la connexion

La chaîne est la méthode préférée pour aplatir les listes superficielles en raison de sa performances et facilité d'utilisation. Il peut gérer n'importe quel itérable, y compris les QuerySets Django.

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