Seite 1 von 1

Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 00:28
von haseluenne
Hallo! Wenn ich eine nested list nach dem Schema

Code: Alles auswählen

a=[[1,2,3],[4,5,6],[7,8,9]]
habe, wie komme ich dann an die jeweils nullten Elemente der inneren Listen dran, sprich 1,4,6; 2,5,8 usw.?

Habe es (für die ersten Elemente) mit z.B.

Code: Alles auswählen

a[0:2][1]
versucht, aber das liefert mir

Code: Alles auswählen

[4,5,6]
?

Bin echt ratlos was der da anstellt sobald man zweidimensional nen Bereich mit Doppelpunkten angibt, wenn man nur Einzelzahlen eingibt ala

Code: Alles auswählen

a[1][1]
liefert er mir anstandslos jeden skalaren Wert an jeder Position.

Re: Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 00:45
von anogayales
Wie wär's mit einer Schleife oder List Comprehension à la

Code: Alles auswählen

In [4]: [elem[0] for elem in a]
Out[4]: [1, 4, 7]

In [5]: [elem[1] for elem in a]
Out[5]: [2, 5, 8]

In [6]: [elem[2] for elem in a]
Out[6]: [3, 6, 9]
Anstatt in Zukunft zu raten was du machst, kannst du beim slicing Zwischenschritte ausgeben à la

Code: Alles auswählen

In [7]: a[0:2]
Out[7]: [[1, 2, 3], [4, 5, 6]]

In [8]: a[0:2][1]
Out[8]: [4, 5, 6]
Grüße,
anogayales

Re: Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 00:49
von derdon

Code: Alles auswählen

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> zip(*a)[0]
(1, 4, 7)
>>> zip(*a)[1]
(2, 5, 8)
>>> zip(*a)[2]
(3, 6, 9)

Re: Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 08:07
von Rekrul
operator.itemgetter

kleines Beispiel:

Code: Alles auswählen

>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> from operator import itemgetter
>>> map(itemgetter(0), a)
[1, 4, 7]

Re: Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 08:34
von JonasR
Nur der Vollständigkeit halber :D Nicht ernst zu nehmen :P

Code: Alles auswählen

>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> map(lambda a:a[0], a)
[1, 4, 7]

Re: Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 09:38
von Rekrul
Mit numpy :lol:

Code: Alles auswählen

>>> import numpy
>>> a = numpy.asarray([[1,2,3],[4,5,6],[7,8,9]])
>>> a[:,0]
array([1, 4, 7])

Re: Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 11:18
von /me
Das ist doch alles viel zu umständlich.

Code: Alles auswählen

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> list(next(value for value in sublist) for sublist in a)
[1, 4, 7]

Re: Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 12:04
von Kebap
haseluenne hat geschrieben: Bin echt ratlos was der da anstellt sobald man zweidimensional nen Bereich mit Doppelpunkten angibt
Hallo! Dein Problem war, dass du mit den Doppelpunkten erneut eine nested Liste erzeugt hattest. Kann nur unterschreiben, wie hilfreich ein häufiges print beim debuggen sein kann.

Re: Nur bestimme Elemente aus Nested List auslesen

Verfasst: Dienstag 7. Februar 2012, 23:35
von derdon
/me hat geschrieben:Das ist doch alles viel zu umständlich.

Code: Alles auswählen

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> list(next(value for value in sublist) for sublist in a)
[1, 4, 7]
Das geht auch unumständlicher:

Code: Alles auswählen

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> list(next(iter(sublist)) for sublist in a)
[1, 4, 7]