Python: kürzester Weg, um Elemente aus zwei Listen zu verschachteln

9

Ich versuche, den kürzesten Weg (Zeichen möglich) zu finden, um Liste 3 zu erhalten.

Liste 1 und Liste 2 sind mir bereits als Argumente gegeben und gleich lang.

l1 = [1, 2, 3, 4, 5]
l2 = ['a', 'b', 'c', 'd', 'e']

Und Liste 3 sollte so aussehen (ja, es muss eine Liste sein):

l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]
Matias
quelle
2
Ihr Ziel ist die spezifische Liste buchstäblich Ausgang l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]gegeben l1 = [1, 2, 3, 4, 5]und l2 = ['a', 'b', 'c', 'd', 'e']bereits vergeben, oder ist die Idee , dass l1und l2konnte zwei beliebigen Listen der gleichen Länge sein?
xnor

Antworten:

13

Zip und Summe

[*sum(zip(l2,l1),())]

Probieren Sie es online aus!

Zippt die beiden Listen zusammen und fügt dann alle Tupel hinzu, um eine kombinierte Liste zu erstellen. Die Zip-Datei funktioniert nur, wenn die Listen garantiert dieselbe Größe haben. Andernfalls wird die längere Liste abgeschnitten.

Die Umgebung wurde hinzugefügt, um [* ]sie in eine Liste umzuwandeln, wie von FryAmTheEggman vorgeschlagen.

Scherzen
quelle
2
Wenn Sie Python 2 verwenden, können Sie listanstelle von [* (...) ]+3 Bytes verwenden.
Erik der Outgolfer
6

Slice-Zuordnung

c=a*2
c[1::2]=a
c[::2]=b

Dies ist drei Bytes länger als die Verwendung von Jo Kings Lösung c=[*sum(zip(b,a),())], aber es ist geschickt. Es könnte situativ kürzer sein (ich kann mir allerdings nicht vorstellen, wo).

Lynn
quelle