Manchmal möchten Sie eine zweidimensionale Liste in Python in eine eindimensionale Liste konvertieren. Sie kann mit der Funktion "Summe" in eine Zeile konvertiert werden.
Wenn Sie es nicht wissen, wissen Sie auf den ersten Blick nicht, was Sie tun, aber es ist überraschend bequem zu bedienen. Wenn Sie eine dreidimensionale Liste in eine eindimensionale Liste konvertieren möchten, können Sie die Funktion "Summe" zweimal verwenden.
x = [[1, 2], [3, 4]]
x = sum(x, [])
print(x) # [1, 2, 3, 4]
y = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
y = sum(sum(y, []), [])
print(y) # [1, 2, 3, 4, 5, 6, 7, 8]
Wenn Geschwindigkeit wichtig ist, verwenden Sie itertools.chain.from_iterable (). Dies ist schneller als die Verwendung der Summenfunktion.
import itertools
x = [[1, 2], [3, 4]]
x = itertools.chain.from_iterable(x)
print(list(x)) # [1, 2, 3, 4]
y = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
y = itertools.chain.from_iterable(list(itertools.chain.from_iterable(y)))
print(list(y)) # [1, 2, 3, 4, 5, 6, 7, 8]
Darüber hinaus gibt es eine Methode zum Erstellen einer eigenen Funktion. Dies hängt nicht von der Anzahl der Dimensionen in der Liste ab. Daher wird empfohlen, Daten mit verschiedenen Dimensionen zu verarbeiten.
https://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists
Recommended Posts