在python中将两个数字连接到一个数字的最有效方法是什么?

时间:2018-03-27 14:18:29

标签: python

在python中将两个数字连接到一个数字的最有效方法是什么?

数字总是在0到255之间,我已经通过Concat测试了几种方法作为字符串并转换回int但是它们在我的代码中耗费时间非常昂贵。

示例

    a = 152 
    c = 255
    d = concat(a,c)

答案:

    d = 152255

3 个答案:

答案 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