python列表转为一个数字_在Python中,如何将列表中的所有项目转换为浮点数?

我有一个脚本,它读取一个文本文件,将十进制数字作为字符串从中提取出来,并将它们放入一个列表中。

所以我有这个清单:

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

如何将列表中的每个值从字符串转换为浮点值?

我尝试过:

1

2for item in list:

float(item)

但这似乎对我不起作用。

不要将列表用作变量名。

1[float(i) for i in lst]

准确地说,它创建了一个新的具有浮点值的列表。与map方法不同,它将在py3k中工作。

对于大型阵列,我建议使用numpy:np.array(inp_list, dtype=np.float32)。您甚至不必指定它是不是一个浮点型,只需使用:np.array(inp_list)。

map(float, mylist)应该这样做。

(在python 3中,map不再返回一个list对象,因此如果您想要一个新的列表,而不仅仅是迭代的内容,那么您要么需要list(map(float, mylist),要么使用silentghost的答案,可以说它更像pythonic。)

float(item)做了正确的事情:它将其参数转换为float并返回它,但它不会在适当的位置改变参数。代码的一个简单修复方法是:

1

2

3new_list = []

for item in list:

new_list.append(float(item))

同样的代码可以通过列表理解来缩短编写时间:new_list = [float(i) for i in list]。

要就地更改列表:

1

2for index, item in enumerate(list):

list[index] = float(item)

顺便说一句,避免对变量使用list,因为它伪装成具有相同名称的内置函数。

对不起,我不明白这里的意思。它与以前的Python式的答案有什么不同?前一个答案中的转换"[float(i)for i in lst]是否保留原始列表索引?

@aai更改原始列表而不是创建新列表。

这将是另一种方法(不使用任何循环!):

1

2import numpy as np

list(np.float_(list_name))

如果您希望将np.array保留为np.array=,则无需再次将np.array强制转换到列表中。

可以使用numpy将列表直接转换为浮动数组或矩阵。

1

2

3import numpy as np

list_ex = [1, 0] # This a list

list_int = np.array(list_ex) # This is a numpy integer array

如果要将整数数组转换为浮动数组,请添加0。对它

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

你甚至可以麻木地做这件事

1

2import numpy as np

np.array(your_list,dtype=float)

此函数将列表的np数组返回为float

还可以将"dtype"设置为int

我就是这样做的。

1

2

3

4

5

6my_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

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

我必须先从浮点数列表中提取数字:

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

然后每个转换为一个浮点:

1

2

3ad=[]

for z in range(len(df4)):

ad.append([float(i) for i in df4['sscore'][z]])

最后,将所有浮点分配给数据帧作为float64:

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

我在程序中使用以下方法解决了这个问题:

1

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

list.append(number_input)

操作说明他正在从文本文件中读取。这个答案不适用于所问的问题。

1

2

3

4

5import 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]))

#

它将类型显示为字符串列表。可以使用numpy将此列表同时转换为一个浮点数组:

1

2

3

4my_list = np.array(my_list).astype(np.float)

print(type(my_list), type(my_list[0]))

#

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值