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