Hoe converteer ik in Python alle items in een lijst naar floats?

Ik heb een script dat een tekstbestand leest, decimale getallen eruit haalt als strings en ze in een lijst plaatst.

Dus ik heb deze lijst:

['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']

Hoe converteer ik elk van de waarden in de lijst van een string naar een float?

Ik heb geprobeerd:

for item in list:
    float(item)

Maar dit lijkt niet te werken voor mij.


Antwoord 1, autoriteit 100%

[float(i) for i in lst]

om precies te zijn, het creëert een nieuwe lijst met float-waarden. In tegenstelling tot de map-aanpak werkt het in py3k.


Antwoord 2, autoriteit 28%

map(float, mylist)zou het moeten doen.

(In Python 3 geeft map geen lijstobject meer terug, dus als je een nieuwe lijst wilt en niet alleen iets om over te herhalen, heb je ofwel list(map(float, mylist)nodig – of gebruik het antwoord van SilentGhost, dat aantoonbaar meer pythonisch is.)


Antwoord 3, autoriteit 4%

Dit zou een andere methode zijn (zonder een lus te gebruiken!):

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

Antwoord 4, autoriteit 3%

float(item)doet het juiste: het converteert zijn argument naar float en retourneert het, maar het verandert het argument niet op zijn plaats. Een eenvoudige oplossing voor uw code is:

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

Dezelfde code kan geschreven korter behulp lijstcomprehensie: new_list = [float(i) for i in list]

Om lijst te wijzigen in-place:

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

Tussen haakjes, vermijd het gebruik van listvoor uw variabelen, omdat het zich voordoet ingebouwde functie met dezelfde naam.


Antwoord 5, Autoriteit 2%

U kunt zelfs dit doen door numpy

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

deze terugkeer np reeks van de lijst als float

u kunt ook instellen ‘dtype’ als int


Antwoord 6

U kunt gebruik maken van numpy om een ​​lijst rechtstreeks naar een drijvende matrix of te converteren.

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

Als u wilt de integer-array om te zetten in een zwevende-array en voeg dan 0. te

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

Antwoord 7

U kunt de map()functie gebruiken om de lijst direct naar floats

float_list = map(float, list)

Antwoord 8

u kunt gebruiken numpy te vermijden looping:

import numpy as np
list(np.array(my_list).astype(float)

Antwoord 9

Dit is hoe ik het zou doen.

my_list = ['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']
print type(my_list[0]) # prints <type 'str'>
my_list = [float(i) for i in my_list]
print type(my_list[0]) # prints <type 'float'>

Antwoord 10

import numpy as np
my_list = ['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']
print(type(my_list), type(my_list[0]))   
# <class 'list'> <class 'str'>

die het type weergeeft als een lijst met tekenreeksen. Je kunt deze lijst tegelijkertijd converteren naar een array van floats met numpy:

   my_list = np.array(my_list).astype(np.float)
    print(type(my_list), type(my_list[0]))  
    # <class 'numpy.ndarray'> <class 'numpy.float64'>

Antwoord 11

Ik moest eerst getallen uit een lijst met float-strings halen:

  df4['sscore'] = df4['simscore'].str.findall('\d+\.\d+')

vervolgens converteren naar een float:

  ad=[]
   for z in range(len(df4)):
      ad.append([float(i) for i in df4['sscore'][z]])

wijs uiteindelijk alle floats toe aan een dataframe als float64:

  df4['fscore'] = np.array(ad,dtype=float)

Antwoord 12

Ik heb dit probleem in mijn programma opgelost met:

number_input = float("{:.1f}".format(float(input())))
list.append(number_input)

Antwoord 13

for i in range(len(list)): list[i]=float(list[i])

Other episodes