Как я могу объединить два целочисленных числа (например, 10 и 20) в Python и иметь число 1020.
Слияние двух целых чисел в Python
Ответ 1
Лучший способ сделать это в python был указан в принятом ответе, но если вы хотите сделать это в шаблонах jinja2 - оператор конкатенации ~
дает вам аккуратный способ сделать это, так как он ищет представление unicode из всех объектов, таким образом, вы можете "конкатенировать целые числа".
То есть вы можете это сделать (учитывая a=10
и b=20
):
{{ a ~ b }}
Ответ 2
Вставьте оба значения в строку, объедините строки и затем верните результат в целое число:
z = int(str(x) + str(y))
Ответ 3
Использование математики, вероятно, быстрее, чем решения, которые преобразуются в str и обратно:
Если вы можете принять двухзначное второе число:
def f(x, y):
return x*100+y
Использование:
>>> f(1,2)
102
>>> f(10,20)
1020
Хотя вам, вероятно, понадобятся некоторые проверки, включенные для проверки второго номера не более двух цифр. Или, если вашим вторым номером может быть любое количество цифр, вы можете сделать что-то вроде этого:
import math
def f(x, y):
a = math.floor(math.log10(y))
return int(x*10**(1+a)+y)
Использование:
>>> f(10,20)
1020
>>> f(99,193)
99193
Однако эта версия не позволяет объединять числа, такие как 03 и 02, чтобы получить 0302. Для этого вам нужно либо добавить аргументы, чтобы указать количество цифр в каждом целочисленном, либо использовать строки.
Ответ 4
Конечно, "правильным" ответом был бы ответ Константина. Но если вы все еще хотите знать, как это сделать, не используя строковые трансляции, просто с помощью математики:
import math
def numcat(a,b):
return int(math.pow(10,(int(math.log(b,10)) + 1)) * a + b)
>> numcat(10, 20)
>> 1020
Ответ 5
Грубая, но рабочая реализация:
i1,i2 = 10,20
num = int('%i%i' % (i1,i2))
В принципе, вы просто объединяете два числа в одну строку, а затем возвращаете их обратно в int.
Ответ 6
с использованием форматирования строк старого стиля:
>>> x = 10
>>> y = 20
>>> z = int('%d%d' % (x, y))
>>> print z
1020
Ответ 7
Просто чтобы дать другое решение:
def concat_ints(a, b):
return a*(10**len(str(b)))+b
>>> concat_ints(10, 20)
1020
Ответ 8
С помощью этой функции вы можете объединить столько чисел, сколько хотите
def concat(*args):
string = ''
for each in args:
string += str(each)
return int(string)
Например, concat(20, 10, 30)
вернет 201030
целое число
ИЛИ
Вы можете использовать однострочную программу
int(''.join(str(x) for x in (20,10,30)))
Это также вернет 201030
.
Ответ 9
def concatenate_int(x, y):
try:
a = floor(log10(y))
except ValueError:
a = 0
return int(x * 10 ** (1 + a) + y)
def concatenate(*l):
j = 0
for i in list(*l):
j = concatenate_int(j, i)
return j
Ответ 10
Хорошим способом было бы использовать встроенную функцию reduce():
reduce(lambda x,y:x*10+y,[10,20])