Seite 1 von 1

Liste / Array umsortieren

Verfasst: Samstag 30. November 2024, 20:33
von Knollo
Hallochen, ich muss ein Array umsortieren:

Eingabe:

Code: Alles auswählen

[['gestern', 12, 10.5],['heute', 13, 10.6],['morgen', 14, 10.4]]
Ziel:

Code: Alles auswählen

[['gestern', 'heute', 'morgen'],[12, 13, 14],[10.5, 10.6, 10.4]]
Derzeit hab ich es mittels 2 Schleifen umgesetzt, gibt es dafür noch andere Lösungen? numpy?

Danke - Stefan

Re: Liste / Array umsortieren

Verfasst: Samstag 30. November 2024, 20:47
von pillmuncher

Re: Liste / Array umsortieren

Verfasst: Samstag 30. November 2024, 20:50
von Knollo
Genau, danke!
Hab in numpy die Methode ' transpose()' gefunden - sollte auch passen.
Aber danke, Problem gelöst. :-)

Re: Liste / Array umsortieren

Verfasst: Samstag 30. November 2024, 23:19
von pillmuncher
Knollo hat geschrieben: Samstag 30. November 2024, 20:50 Hab in numpy die Methode ' transpose()' gefunden
Du schießt mit Kanonen auf Spatzen. Schau her:

Code: Alles auswählen

>>> records = [['gestern', 12, 10.5],['heute', 13, 10.6],['morgen', 14, 10.4]]
>>> transposed = list(zip(*records))
>>> transposed
[('gestern', 'heute', 'morgen'), (12, 13, 14), (10.5, 10.6, 10.4)]

Re: Liste / Array umsortieren

Verfasst: Samstag 30. November 2024, 23:23
von Knollo
so einfach? :geek: ... und ich hab richtig Hirnschmalz verbrannt - Danke

Re: Liste / Array umsortieren

Verfasst: Sonntag 1. Dezember 2024, 01:48
von __blackjack__
Ich würde das noch durch `strict` ergänzen: ``list(zip(*records, strict=True))``. Oder `more_itertools.transpose()` verwenden. 😀

Re: Liste / Array umsortieren

Verfasst: Sonntag 1. Dezember 2024, 14:36
von DeaD_EyE
__blackjack__ hat geschrieben: Sonntag 1. Dezember 2024, 01:48 Ich würde das noch durch `strict` ergänzen: ``list(zip(*records, strict=True))``. Oder `more_itertools.transpose()` verwenden. 😀
Wieso würdest du das so machen, würde sich ein aufmerksamer Leser fragen.

Ohne strict=True würde zip() solange weitermachen, bis eins der Objekte keine Elemente mehr hat.
Mit strict, wird ein ValueError ausgelöst, wenn eins der Listen kürzer oder länger ist.

Code: Alles auswählen

ValueError: zip() argument 3 is longer than arguments 1-2