Heim >Backend-Entwicklung >Python-Tutorial >Was ist der effizienteste Weg, eine flache Liste in Python zu reduzieren?

Was ist der effizienteste Weg, eine flache Liste in Python zu reduzieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-16 14:04:14369Durchsuche

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

Flache Listen in Python reduzieren

Das Reduzieren einer flachen Liste von Iterables ist eine häufige Operation in Python. Obwohl es mehrere Ansätze gibt, bietet jeder eine unterschiedliche Leistung und Lesbarkeit.

1. Listenverständnis

Ein verschachteltes Listenverständnis kann eine Liste verflachen, führt jedoch zu einem NameError, da die im äußeren Verständnis verwendete Variable (z. B. Menüelement) nicht definiert ist.

2. reduzieren

Die Funktion „Reduzieren“ ermöglicht das Reduzieren mithilfe von list.__add__ als Reduktionsoperation. Diese Methode erfordert jedoch einen zusätzlichen list(x)-Aufruf, um Django QuerySet-Objekte in Listen zu konvertieren.

3. itertools.chain

Die Funktion itertools.chain bietet eine effizientere Option zur Listenreduzierung. Es verwendet einen Generator, um Elemente aus den iterierbaren Elementen zu erzeugen, sodass kein Kopieren oder Listenverständnis erforderlich ist.

Codebeispiel:

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))

Kette ist aufgrund ihrer Eigenschaften die bevorzugte Methode zum Reduzieren flacher Listen Leistung und Benutzerfreundlichkeit. Es kann jedes Iterable verarbeiten, einschließlich Django QuerySets.

Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, eine flache Liste in Python zu reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn