假设你在Python中有两个字符串(只有数字),比如字符串a和字符串b。产生数字c = a.b的最快方法是什么(因此,整数部分和b小数部分)?
答案 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)
使用float
和format
。
>>> a, b = '12', '345'
>>> float('{0}.{1}'.format(a, b))
12.345
编辑:不能声称这是最快的(因为我没有测试其他解决方案的速度),但确实完成了工作。
答案 3 :(得分:0)
如果ValueError
或a
无法转换为整数(如果不仅仅是数字),则会引发b
:
float('%d.%d' % (int(a), int(b)))
(在Python 2.7上测试)