Ich habe ein Skript, das eine Textdatei liest, Dezimalzahlen als Zeichenfolgen herauszieht und sie in eine Liste einfügt.
Also habe ich diese Liste:
['0.49', '0.54', '0.54', '0.54', '0.54', '0.54', '0.55', '0.54', '0.54', '0.54',
'0.55', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']
Wie konvertiere ich jeden der Werte in der Liste von einem String in einen Float?
Ich habe versucht:
for item in list:
float(item)
Aber das scheint bei mir nicht zu funktionieren.
list
als Variablennamen verwenden, wird der integriertelist
Konstruktor beschattet, sodass Sie ihn nicht im selben Bereich verwenden könnenAntworten:
Um genau zu sein, wird eine neue Liste mit Gleitkommawerten erstellt. Im Gegensatz zum
map
Ansatz funktioniert es in py3k.quelle
np.array(inp_list, dtype=np.float32)
. Sie müssen nicht einmal angeben, ob es sich um einen Float handelt, und nurnp.array(inp_list)
[float(i) for i in lst]
etwas zuweisen müssen. ZB:new_list = [float(i) for i in lst]
map(float, mylist)
Sollte es tun.(In Python 3 gibt map kein
list(map(float, mylist)
Listenobjekt mehr zurück. Wenn Sie also eine neue Liste und nicht nur etwas zum Durchlaufen wünschen , müssen Sie entweder die Antwort von SilentGhost verwenden - oder verwenden, die wohl pythonischer ist.)quelle
float(item)
Tun Sie das Richtige: Es konvertiert sein Argument in float und gibt es zurück, ändert aber das Argument nicht an Ort und Stelle. Eine einfache Lösung für Ihren Code ist:Der gleiche Code kann mit Listenverständnis kürzer geschrieben werden:
new_list = [float(i) for i in list]
So ändern Sie die Liste an Ort und Stelle:
Übrigens, vermeiden Sie die Verwendung
list
für Ihre Variablen, da diese die integrierte Funktion mit demselben Namen maskieren.quelle
Dies wäre eine andere Methode (ohne Verwendung einer Schleife!):
quelle
Sie können dies sogar durch Numpy tun
Dies gibt das np-Array Ihrer Liste als float zurück
Sie können 'dtype' auch als int festlegen
quelle
Mit numpy können Sie eine Liste direkt in ein schwebendes Array oder eine Matrix konvertieren.
Wenn Sie das Integer-Array in ein Floating-Array konvertieren möchten, fügen Sie 0 hinzu
quelle
So würde ich es machen.
quelle
Hier wird der Typ als Liste von Zeichenfolgen angezeigt. Sie können diese Liste mit numpy gleichzeitig in ein Array von Floats konvertieren:
quelle
Ich musste zuerst Zahlen aus einer Liste von Float-Strings extrahieren:
dann jeweils in einen float umwandeln:
Weisen Sie am Ende alle Floats einem Datenrahmen als float64 zu:
quelle
Ich habe dieses Problem in meinem Programm gelöst mit:
quelle
quelle