Erstes, zweites, drittes... Element aus 2D-Liste bekommen?

2 Antworten

Von Experte ralphdieter bestätigt

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())