Слияние двух целых чисел в Python - программирование
Подтвердить что ты не робот

Слияние двух целых чисел в Python

Как я могу объединить два целочисленных числа (например, 10 и 20) в Python и иметь число 1020.

4b9b3361

Ответ 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])