在python中将两个数字连接到一个数字的最有效方法是什么?
数字总是在0到255之间,我已经通过Concat测试了几种方法作为字符串并转换回int但是它们在我的代码中耗费时间非常昂贵。
示例
a = 152
c = 255
d = concat(a,c)
答案:
d = 152255
答案 0 :(得分:4)
如果数字有界,只需乘以并添加:
>>> a = 152
>>> c = 255
>>> d = a*1000+c
>>> d
152255
>>>
答案 1 :(得分:3)
这很快:
def concat(a, b):
return 10**int(log(b, 10)+1)*a+b
它使用对数来查找第一个数字必须乘以10的次数,以使总和作为连接工作
In [1]: from math import log
In [2]: a = 152
In [3]: b = 255
In [4]: def concat(a, b):
...: return 10**int(log(b, 10)+1)*a+b
...:
In [5]: concat(a, b)
Out[5]: 152255
In [6]: %timeit concat(a, b)
1000000 loops, best of 3: 1.18 us per loop
答案 2 :(得分:0)
是的,你去了:
a = 152
b = 255
def concat(a, b):
n = next(x for x in range(10) if 10**x>a) # concatenates numbers up to 10**10
return a * 10**n + b
print(concat(a, b)) # -> 152255