Mogelijk duplicaat:
Een platte lijst maken van een lijst met lijsten in Python
Ik probeer een gemakkelijke manier te vinden om een multidimensionale (geneste) pythonlijst om te zetten in een enkele lijst, die alle elementen van sublijsten bevat.
Bijvoorbeeld:
A = [[1,2,3,4,5]]
gaat over naar
A = [1,2,3,4,5]
of
A = [[1,2], [3,4]]
gaat over naar
A = [1,2,3,4]
Antwoord 1, autoriteit 100%
Gebruik itertools.chain:
itertools.chain(*iterables)
:Maak een iterator die elementen uit de eerste iterable retourneert totdat deze is uitgeput, en vervolgens doorgaat naar de volgende iterable, totdat alle iterables zijn uitgeput. Gebruikt om opeenvolgende reeksen als een enkele reeks te behandelen.
from itertools import chain
A = [[1,2], [3,4]]
print list(chain(*A))
# or better: (available since Python 2.6)
print list(chain.from_iterable(A))
De uitvoer is:
[1, 2, 3, 4]
[1, 2, 3, 4]
Antwoord 2, autoriteit 48%
Gebruik reduce
functie
reduce(lambda x, y: x + y, A, [])
Of sum
sum(A, [])
Antwoord 3, autoriteit 10%
het eerste geval kan ook gemakkelijk worden gedaan als:
A=A[0]
Antwoord 4, autoriteit 6%
itertools
biedt de ketenfunctie daarvoor:
Van http://docs.python.org/library/itertools.html#recipes :
def flatten(listOfLists):
"Flatten one level of nesting"
return chain.from_iterable(listOfLists)
Houd er rekening mee dat het resultaat een herhaling is, dus u hebt mogelijk list(flatten(...))
nodig.