假设你在 Python 中有两个字符串(只有数字),比如字符串 a 和字符串 b。产生数字 c = ab(因此是整数部分和 b 小数部分)的最快方法是什么?
问问题
4119 次
4 回答
4
如果更快是指速度,我的用法建议我这样做:
float("%s.%s"% ("12", "345"))
时间结果:
>>> timeit.Timer('float("%s.%s"% ("12", "245"))').timeit()
0.39421987533569336
>>> timeit.Timer('float("{0}.{1}".format("12", "245"))').timeit()
0.573634147644043
于 2012-04-24T18:56:51.693 回答
3
原始格式(可能是最快的?):float(str(a) + '.' + str(b))
此解决方案不需要解析格式字符串。
[添加为不信者的答案]
>>> timeit.Timer('float("%s.%s"% ("12", "245"))').timeit()
1.147318164738806
>>> timeit.Timer('float("{0}.{1}".format("12", "245"))').timeit()
1.5033958226534452
>>> timeit.Timer('float("12" + "." + "245")').timeit()
0.6646503955111598
部分解释可能是您始终可以编写%s
int 参数。通过 % 或 via 格式化时,可能会有额外的字符串转换.format()
。
于 2012-04-24T18:57:50.870 回答
1
使用float
和format
。
>>> a, b = '12', '345'
>>> float('{0}.{1}'.format(a, b))
12.345
编辑:不能声称这是最快的(因为我没有测试其他解决方案的速度),但确实完成了工作。
于 2012-04-24T18:50:51.497 回答
0
这将引发一个ValueError
如果a
或b
不能转换为整数(例如,如果不仅仅是数字):
float('%d.%d' % (int(a), int(b)))
(在 Python 2.7 上测试)
于 2012-04-24T18:53:57.310 回答