将分数列表转换为浮点数在Python中
我有一串分数,比如:
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]
或者为了完全符合你的例子(数据最终变成字符串):