在Python中连接两个数字的最快方法

时间:2012-04-24 18:49:14

标签: python atoi

假设你在Python中有两个字符串(只有数字),比如字符串a和字符串b。产生数字c = a.b的最快方法是什么(因此,整数部分和b小数部分)?

4 个答案:

答案 0 :(得分:3)

如果速度更快,我的用法建议我:

float("%s.%s"% ("12", "345"))

timeit结果:

>>> timeit.Timer('float("%s.%s"% ("12", "245"))').timeit()
0.39421987533569336

>>> timeit.Timer('float("{0}.{1}".format("12", "245"))').timeit()
0.573634147644043

答案 1 :(得分: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参数。通过%或.format()进行格式化时,可能会有额外的字符串转换。

答案 2 :(得分:1)

使用floatformat

>>> a, b = '12', '345'
>>> float('{0}.{1}'.format(a, b))
12.345

编辑:不能声称这是最快的(因为我没有测试其他解决方案的速度),但确实完成了工作。

答案 3 :(得分:0)

如果ValueErrora无法转换为整数(如果不仅仅是数字),则会引发b

float('%d.%d' % (int(a), int(b)))

(在Python 2.7上测试)