2017-08-22 1 views
1

Ich sah this Lösung zum Zusammenführen von Listen wie a = [1,2,3], b = [4,5,6] mit res = [*a, *b].Flachen Sie eine verschachtelte Liste mit Listen Entpacken in einer Liste Verständnis

Angenommen, ich habe eine Liste von Unterlisten wie ls = [a,b] ist es möglich, etwas wie res = [*i for i in ls] zu tun?

Diese bestimmte Zeile ist ungültig, da SyntaxError: iterable unpacking cannot be used in comprehension. Kann etwas Ähnliches getan werden?

Wenn nicht, Wie kann ich einfach eine Liste erstellen, die alle Elemente in Unterlisten enthält?

mit Python 3.5.3

+1

Das Syntax für python3.6 –

+2

@ cᴏʟᴅsᴘᴇᴇᴅ arbeitet Haben Sie den gleichen Fehler mit python3 .6.1 – araknoid

+1

@araknoid Ich nehme etwa '[* a, * b]' –

Antwort

2

Nein, ich glaube nicht, dass sie Unterstützung für die Liste hinzugefügt hat noch in einem Verständnis Auspacken.

Als Alternative können Sie verwenden itertools.chain:

>>> from itertools import chain 
>>> list(chain.from_iterable([a, b])) 
[1, 2, 3, 4, 5, 6] 

Oder eine verschachtelte Schleife Liste Verständnis:

>>> [y for x in [a, b] for y in x] 
[1, 2, 3, 4, 5, 6] 
+0

Nicht nur 3,6, es ist auch möglich, '[* a, * b]' in 3.5 zu tun (siehe [PEP 448] (https://www.python.org/dev/peps/pep-0448/)) – MSeifert

+0

@MSeifert Danke für die Bestätigung! –

+0

Oder 'sum (ls, [])'. Ich meine, sie haben nur "leicht" gefragt. –

Verwandte Themen