Seite 1 von 1
2d list: wie konvertiert man string nach float in a pythonic way
Verfasst: Dienstag 4. Oktober 2022, 13:04
von kkornfield
Hi
wie wurdet ihr das nach float bringen:
x= [["1" , "2", "3"],["4" , "5", "6"],["7" , "8.1", "9"]]
danke
Re: 2d list: wie konvertiert man string nach float in a pythonic way
Verfasst: Dienstag 4. Oktober 2022, 13:32
von __blackjack__
@kkornfield: Grundlagentutorial Schleifen oder „list comprehension“ und die `float()`-Funktion. Wenn man cool sein will, kann man noch `list()` und `map()` in den Mix werfen. Und falls man aus irgendwelchen Gründen sowieso schon das `glom`-Package als Abhängigkeit hat, dessen `glom()`-Funktion:
Code: Alles auswählen
In [631]: glom(xs, [[float]])
Out[631]: [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.1, 9.0]]
Re: 2d list: wie konvertiert man string nach float in a pythonic way
Verfasst: Dienstag 4. Oktober 2022, 13:39
von kbr
Und ohne glom hier auf die Schnelle:
Code: Alles auswählen
x = [["1" , "2", "3"],["4" , "5", "6"],["7" , "8.1", "9"]]
def get_float(items):
for item in items:
if isinstance(item, list):
yield from get_float(item)
else:
yield float(item)
list(get_float(x))
Allerdings linearisiert das die Sequenz. Daran hatte ich – gleichfalls auf die Schnelle – nicht gedacht.
Re: 2d list: wie konvertiert man string nach float in a pythonic way
Verfasst: Dienstag 4. Oktober 2022, 13:49
von peterpy
oder einfach:
Code: Alles auswählen
ur_array= [["1" , "2", "3"],["4" , "5", "6"],["7" , "8.1", "9"]]
float_array = []
for liste in ur_array:
neue_liste = []
for element in liste:
zahl = float(element)
neue_liste.append(zahl)
float_array.append(neue_liste)
Gruss Peter
Re: 2d list: wie konvertiert man string nach float in a pythonic way
Verfasst: Dienstag 4. Oktober 2022, 13:59
von __blackjack__
Listen als `array` zu benennen ist keine gute Idee. Es gibt auch Arrays, damit sind aber in der Regel Numpy-Arrays gemeint wenn man über Python spricht. Grunddatentypen sollten auch nicht in Namen vorkommen. Und eigentlich ist das mit „list comprehensions“ ein kleiner Einzeiler. Mit `map()` und `list()` kann man sich dann sogar noch Namen einsparen.
Re: 2d list: wie konvertiert man string nach float in a pythonic way
Verfasst: Dienstag 4. Oktober 2022, 14:06
von kbr
... oder so:
Code: Alles auswählen
x = [["1" , "2", "3"],["4" , "5", "6"],["7" , "8.1", "9"]]
[[float(item) for item in items] for items in x]
Wobei ich nested list-comprehension nicht so mag, da diese schnell zur Unübersichtlichkeit neigen.
Re: 2d list: wie konvertiert man string nach float in a pythonic way
Verfasst: Dienstag 4. Oktober 2022, 14:14
von Sirius3
Ich würde sagen, das geht nicht, sagt jedenfalls mein Python:
Code: Alles auswählen
float([["1" , "2", "3"],["4" , "5", "6"],["7" , "8.1", "9"]])
TypeError: float() argument must be a string or a number, not 'list'
Re: 2d list: wie konvertiert man string nach float in a pythonic way
Verfasst: Dienstag 4. Oktober 2022, 14:16
von kbr
Die Idee mit list und map ist auch nicht schlecht, dann ist die LC nicht mehr nested
Aber keine Ahnung, ob es nun serialisiert, oder die Struktur beibehalten werden soll.