Erstes, zweites, drittes... Element aus 2D-Liste bekommen?
Wie macht man aus
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Das hier:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Am besten mit einer list comprahension.
Danke im Vorraus!
2 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Python
Beispielsweise so...
L1 = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
L2 = [[L1[j][i] for j in range(len(L1))] for i in range(len(L1[0]))]
Oder so...
L1 = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
L2 = [[X[i] for X in L1] for i in range(len(L1[0]))]
Oder so...
L1 = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
L2 = [list(z) for z in zip(*L1)]
Oder so...
L1 = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
L2 = [*zip(*L1)]
Wobei man jedoch beim letzten Beispiel nicht [[1, 2, 3], [4, 5, 6], [7, 8, 9]] sondern [(1, 2, 3), (4, 5, 6), (7, 8, 9)] mit Tupeln statt Listen in der Liste erhält.
Kann man auch mit numpy:
import numpy
a = numpy.array([[1, 4, 7], [2, 5, 8], [3, 6, 9]])
print(a.transpose())