Parfois, vous souhaitez convertir une liste à deux dimensions en une liste à une dimension en Python.
Il peut être converti en une ligne en utilisant la fonction sum
.
Si vous ne le savez pas, vous ne saurez pas ce que vous faites au premier coup d'œil, mais c'est étonnamment pratique à utiliser.
Si vous voulez convertir une liste tridimensionnelle en une liste unidimensionnelle, vous pouvez utiliser la fonction sum
deux fois.
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]
Pour la vitesse, utilisez itertools.chain.from_iterable ().
C'est plus rapide que d'utiliser la fonction sum
.
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]
En plus de ce qui précède, il existe également une méthode pour créer votre propre fonction. Cela ne dépend pas du nombre de dimensions dans la liste, c'est pourquoi il est recommandé lors du traitement de données avec différents nombres de dimensions.
https://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists