71 Stimmen

Liste von Tupeln in Liste umwandeln?

Wie konvertiere ich

[(1,), (2,), (3,)]

zu

[1, 2, 3]

100voto

Levon Punkte 134187

Mit einfachen Listenverstehen :

e = [(1,), (2,), (3,)]
[i[0] for i in e]

geben:

[1, 2, 3]

72voto

Praveen Gollakota Punkte 33644

Die Lösung von @Levon eignet sich perfekt für Ihren Fall.

Nebenbei bemerkt, wenn Sie eine variable Anzahl von Elementen in den Tupeln haben, können Sie auch chain de itertools .

>>> a = [(1, ), (2, 3), (4, 5, 6)]
>>> from itertools import chain
>>> list(chain(a))
[(1,), (2, 3), (4, 5, 6)]
>>> list(chain(*a))
[1, 2, 3, 4, 5, 6]
>>> list(chain.from_iterable(a)) # More efficient version than unpacking
[1, 2, 3, 4, 5, 6]

35voto

Andrew Clark Punkte 193562

Hier ist eine weitere Alternative, wenn Sie eine variable Anzahl von Elementen in den Tupeln haben können:

>>> a = [(1,), (2, 3), (4, 5, 6)]
>>> [x for t in a for x in t]
[1, 2, 3, 4, 5, 6]

Dies ist im Grunde nur eine verkürzte Form der folgenden Schleifen:

result = []
for t in a:
    for x in t:
        result.append(x)

7voto

Touhami Punkte 749
>>> a = [(1,), (2,), (3,)]
>>> b = map(lambda x: x[0], a)
>>> b
[1, 2, 3]

Mit Python3 müssen Sie die Funktion list(..) an die Ausgabe von map(..) anhängen, d.h.

b = list(map(lambda x: x[0], a))

Dies ist die beste Lösung in eine Zeile mit eingebauten Python-Funktionen.

7voto

fraxel Punkte 33570
>>> a = [(1,), (2,), (3,)]
>>> zip(*a)[0]
(1, 2, 3)

Für eine Liste:

>>> list(zip(*a)[0])
[1, 2, 3]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X