Wie konvertiere ich alle Elemente in einer Liste in Floats? [duplicate]

Lesezeit: 3 Minuten

Ich habe ein Skript, das eine Textdatei liest, Dezimalzahlen als Zeichenfolgen daraus extrahiert und sie in eine Liste einfügt.

Also ich habe diese Liste:

my_list = ['0.49', '0.54', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']

Wie konvertiere ich jeden Wert in der Liste von einem String in einen Float?

Ich habe versucht:

for item in my_list:
    float(item)

Aber das scheint bei mir nicht zu funktionieren.

  • Verwenden Sie list nicht als Variablennamen.

    – Tim Pietzcker

    23. Okt. 2009 um 15:39

  • Um den obigen Kommentar näher zu erläutern: using list Als Variablenname wird die integrierte Variable beschattet list Konstruktor, sodass Sie dies nicht im selben Bereich verwenden können

    – Lasse Halbberg Haarbye

    25. Juni 2019 um 16:05 Uhr


[float(i) for i in lst]

Genauer gesagt wird eine neue Liste mit Float-Werten erstellt. im Gegensatz zu den map Ansatz, es wird in py3k funktionieren.

  • Für große Arrays würde ich die Verwendung von Numpy empfehlen: np.array(inp_list, dtype=np.float32). Sie müssen nicht einmal angeben, ob es sich um einen Float handelt, sondern verwenden einfach: np.array(inp_list)

    – Thomas Devoogdt

    23. Mai 2018 um 13:40 Uhr


  • @Thomas Devoogdt: Ich denke, Sie müssen den Typ angeben, sonst erhalten Sie ein Numpy-Array von Zeichenfolgen

    – seb007

    2. Juli 2019 um 9:28


  • Bitte beachten Sie, dass Sie eine Zuordnung vornehmen müssen [float(i) for i in lst] zu etwas. Z.B: new_list = [float(i) for i in lst]

    – FaizFizy

    24. Okt. 2019 um 2:27


  • Warum verfügt Python nicht über eine professionelle Funktion, um diesen Vorgang auszuführen?

    – Benutzer2585501

    7. Okt. 2021 um 0:17

Benutzer-Avatar von Tim Pietzcker
Tim Pietzcker

map(float, mylist) Sollte es tun.

(In Python 3 gibt „map“ kein Listenobjekt mehr zurück. Wenn Sie also eine neue Liste und nicht nur etwas zum Durchlaufen möchten, benötigen Sie entweder list(map(float, mylist) – oder verwenden Sie die Antwort von SilentGhost, die wohl pythonischer ist.)

  • Dies ist in der Tat eine Design-Suboptimalität in Python 3.

    – xuancong84

    6. November 2019 um 7:28

Amin Kianys Benutzeravatar
Amin Kiany

Dies wäre eine andere Methode (ohne Verwendung einer Schleife!):

import numpy as np
list(np.float_(list_name))

  • Sie müssen das np.array nicht erneut in die Liste umwandeln, wenn Sie es als np.array behalten möchten =)

    – alvas

    19. Juni 2018 um 1:49

Benutzer-Avatar von Denis Otkidach
Denis Otkidach

float(item) Machen Sie das Richtige: Es wandelt sein Argument in Float um und gibt es zurück, aber es ändert das Argument nicht an Ort und Stelle. Eine einfache Lösung für Ihren Code ist:

new_list = []
for item in list:
    new_list.append(float(item))

Derselbe Code kann mithilfe des Listenverständnisses kürzer geschrieben werden: new_list = [float(i) for i in list]

So ändern Sie die Liste direkt:

for index, item in enumerate(list):
    list[index] = float(item)

Übrigens, vermeiden Sie die Verwendung list für Ihre Variablen, da es integrierte Funktionen mit demselben Namen maskiert.

Alirezas Benutzeravatar
Alireza

Sie können dies sogar mit Numpy tun

import numpy as np
np.array(your_list,dtype=float)

Dies gibt das np-Array Ihrer Liste als Float zurück

Sie können „dtype“ auch als int festlegen

  • Aber dann geben Sie ein Numpy-Array zurück, keine Liste.

    – Benutzer650261

    24. Juni 2019 um 19:42 Uhr

Benutzeravatar von theProcrastinator
derZauderer

Du kannst den … benutzen map() Funktion zum direkten Konvertieren der Liste floats:

float_list = map(float, list)

  • Aber dann geben Sie ein Numpy-Array zurück, keine Liste.

    – Benutzer650261

    24. Juni 2019 um 19:42 Uhr

Benutzeravatar von bfree67
bfree67

Mit Numpy können Sie eine Liste direkt in ein Floating-Array oder eine Floating-Matrix konvertieren.

    import numpy as np
    list_ex = [1, 0] # This a list
    list_int = np.array(list_ex) # This is a numpy integer array

Wenn Sie das Integer-Array in ein Floating-Array konvertieren möchten, fügen Sie 0 hinzu

    list_float = np.array(list_ex) + 0. # This is a numpy floating array

1450270cookie-checkWie konvertiere ich alle Elemente in einer Liste in Floats? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy