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:
['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']
How do I convert each of the values in the list from a string to a float?
I have tried:
for item in list: float(item)
But this doesn’t seem to work for me.
[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.
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.)
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.
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