将分数列表转换为浮点数在Python中

9 投票
7 回答
5862 浏览
提问于 2025-04-16 03:21

我有一串分数,比如:

data = ['24/221 ', '25/221 ', '24/221 ', '25/221 ', '25/221 ', '30/221 ', '31/221 ', '31/221 ', '31/221 ', '31/221 ', '30/221 ', '30/221 ', '33/221 ']

我该怎么把这些分数转换成浮点数呢,比如:

data = ['0.10 ', '0.11 ', '0.10 ', '0.11 ', '0.13 ', '0.14 ', '0.14 ', '0.14 ', '0.14 ', '0.14 ', '0.13 ', '0.13 ', '0.15 ']

看起来 Fraction 模块只能把东西转换成 Fractions(而不是从 Fractions 转换),而 float([x]) 需要一个字符串或者整数。

7 个回答

1

使用分数模块虽然看起来很整洁,但相比于简单的字符串分割或分区,它的效率要低一些(速度较慢)。

这个列表推导式生成的浮点数和得到最多投票的答案是一样的。

[(n/d) for n,d in (map(float, i.split("/")) for i in data)]

如果你想要保留两位小数的字符串,可以使用下面的代码。

["%.2f"%(n/d) for n,d in (map(float, i.split("/")) for i in data)]
2

这段代码的意思是……

首先,它定义了一个变量,变量就像一个盒子,可以用来存放信息。接着,它给这个盒子里放了一些数据。然后,代码会根据这些数据进行一些操作,比如计算、比较或者显示结果。

在代码的不同部分,可能会有一些条件判断,比如“如果这个条件成立,就执行某个操作”。这就像是在说:“如果今天下雨,我就带伞;如果不下雨,我就不带。”

最后,代码可能会输出结果,比如在屏幕上显示一些信息,或者把结果保存到文件里。

总之,这段代码的主要目的是处理数据并给出结果,具体的操作和逻辑会根据代码的内容而有所不同。

import fractions
data = [str(round(float(fractions.Fraction(x)), 2)) for x in data]
15
import fractions
data = [float(fractions.Fraction(x)) for x in data]
import fractions
data = [str(float(fractions.Fraction(x))) for x in data]

或者为了完全符合你的例子(数据最终变成字符串):

撰写回答