In Python, how do I convert all of the items in a list to floats?


Python Problem Overview

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:

But this doesn't seem to work for me.

Python Solutions

Solution 1 - Python

[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.

Solution 2 - Python

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.)

Solution 3 - Python

This would be an other method (without using any loop!):

import numpy as np

Solution 4 - Python

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:

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.

Solution 5 - Python

you can even do this by numpy

import numpy as np

this return np array of your list as float

you also can set 'dtype' as int

Solution 6 - Python

You can use the map() function to convert the list directly to floats:

float_list = map(float, list)

Solution 7 - Python

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

Solution 8 - Python

you can use numpy to avoid looping:

import numpy as np

Solution 9 - Python

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

Solution 10 - Python

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

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]))  
    # <class 'numpy.ndarray'> <class 'numpy.float64'>

Solution 11 - Python

I have solve this problem in my program using:

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

Solution 12 - Python

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:

   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)

Solution 13 - Python

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


All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsnkView Question on Stackoverflow
Solution 1 - PythonSilentGhostView Answer on Stackoverflow
Solution 2 - PythonTim PietzckerView Answer on Stackoverflow
Solution 3 - PythonAmin KianyView Answer on Stackoverflow
Solution 4 - PythonDenis OtkidachView Answer on Stackoverflow
Solution 5 - PythonAlirezaView Answer on Stackoverflow
Solution 6 - Pythonmnaghd01View Answer on Stackoverflow
Solution 7 - Pythonbfree67View Answer on Stackoverflow
Solution 8 - PythonVitor RosaView Answer on Stackoverflow
Solution 9 - PythonSamlexView Answer on Stackoverflow
Solution 10 - PythonBarry O'SullivanView Answer on Stackoverflow
Solution 11 - PythonGuiView Answer on Stackoverflow
Solution 12 - PythonMax KleinerView Answer on Stackoverflow
Solution 13 - Pythonuser11545988View Answer on Stackoverflow