Hướng dẫn convert to float python

I have a script which reads a text file, pulls decimal numbers out of it as strings and places them into a list.

So I have this list:

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

How do I convert each of the values in the list from a string to a float?

I have tried:

for item in my_list:
    float[item]

But this doesn't seem to work for me.

Wenuka

7312 gold badges8 silver badges20 bronze badges

asked Oct 23, 2009 at 15:33

2

[float[i] for i in lst]

to be precise, it creates a new list with float values. Unlike the map approach it will work in py3k.

answered Oct 23, 2009 at 15:34

SilentGhostSilentGhost

293k64 gold badges301 silver badges291 bronze badges

4

map[float, mylist] should do it.

[In Python 3, map ceases to return a list object, so if you want a new list and not just something to iterate over, you either need list[map[float, mylist] - or use SilentGhost's answer which arguably is more pythonic.]

answered Oct 23, 2009 at 15:34

Tim PietzckerTim Pietzcker

318k56 gold badges492 silver badges548 bronze badges

1

This would be an other method [without using any loop!]:

import numpy as np
list[np.float_[list_name]]

answered May 26, 2018 at 12:35

Amin KianyAmin Kiany

6436 silver badges16 bronze badges

1

float[item] do the right thing: it converts its argument to float and and return it, but it doesn't change argument in-place. A simple fix for your code is:

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

The same code can written shorter using list comprehension: new_list = [float[i] for i in list]

To change list in-place:

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

BTW, avoid using list for your variables, since it masquerades built-in function with the same name.

answered Oct 23, 2009 at 15:44

Denis OtkidachDenis Otkidach

30.9k8 gold badges75 silver badges97 bronze badges

2

you can even do this by numpy

import numpy as np
np.array[your_list,dtype=float]

this return np array of your list as float

you also can set 'dtype' as int

answered Sep 16, 2018 at 12:37

AlirezaAlireza

7267 silver badges10 bronze badges

1

You can use the map[] function to convert the list directly to floats:

float_list = map[float, list]

answered May 23, 2021 at 4:44

mnaghd01mnaghd01

1052 silver badges6 bronze badges

You can use numpy to convert a list directly to a floating array or matrix.

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

If you want to convert the integer array to a floating array then add 0. to it

    list_float = np.array[list_ex] + 0. # This is a numpy floating array

answered Jan 7, 2016 at 15:13

bfree67bfree67

5896 silver badges5 bronze badges

you can use numpy to avoid looping:

import numpy as np
list[np.array[my_list].astype[float]

answered Jul 9, 2020 at 0:48

1

This is how I would do it.

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

Stephen Rauch

45.6k30 gold badges105 silver badges126 bronze badges

answered Jan 27, 2018 at 23:41

SamlexSamlex

1191 silver badge5 bronze badges

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]]]   
#  

which displays the type as a list of strings. You can convert this list to an array of floats simultaneously using numpy:

    my_list = np.array[my_list].astype[np.float]

    print[type[my_list], type[my_list[0]]]  
    #  

answered May 16, 2018 at 12:33

I had to extract numbers first from a list of float strings:

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

then each convert to a float:

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

in the end assign all floats to a dataframe as float64:

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

answered Mar 5, 2019 at 13:34

Max KleinerMax Kleiner

1,16211 silver badges13 bronze badges

I have solve this problem in my program using:

number_input = float["{:.1f}".format[float[input[]]]]
list.append[number_input]

sentence

7,3974 gold badges31 silver badges37 bronze badges

answered Sep 4, 2018 at 13:53

1

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

double-beep

4,57613 gold badges30 silver badges40 bronze badges

answered May 23, 2019 at 16:05

Chủ Đề