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

Вопрос:Как я могу объединить два целочисленных числа (например, 10 и 20) в Python и иметь число 1020. Лучший ответ: Лучший способ сделать это в python был указан в принятом ответе, но если вы хотите сделать это в шаблонах jinja2 - оператор конкатенации ~ дает вам аккуратный способ сделать это, так как он ищет представление unicode

Вопрос:

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

Лучший ответ:

Лучший способ сделать это в python был указан в принятом ответе, но если вы хотите сделать это в шаблонах jinja2 – оператор конкатенации ~ дает вам аккуратный способ сделать это, так как он ищет представление unicode из всех объектов, таким образом, вы можете “конкатенировать целые числа”.

То есть вы можете это сделать (учитывая a=10 и b=20):

{{ a ~ b }} Ответ №1

Вставьте оба значения в строку, объедините строки и затем верните результат в целое число:

z = int(str(x) + str(y)) Ответ №2

Использование математики, вероятно, быстрее, чем решения, которые преобразуются в 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. Для этого вам нужно либо добавить аргументы, чтобы указать количество цифр в каждом целочисленном, либо использовать строки.

Ответ №3

Конечно, “правильным” ответом был бы ответ Константина. Но если вы все еще хотите знать, как это сделать, не используя строковые трансляции, просто с помощью математики:

import math def numcat(a,b): return int(math.pow(10,(int(math.log(b,10)) + 1)) * a + b) >> numcat(10, 20) >> 1020 Ответ №4

Грубая, но рабочая реализация:

i1,i2 = 10,20 num = int(‘%i%i’ % (i1,i2))

В принципе, вы просто объединяете два числа в одну строку, а затем возвращаете их обратно в int.

Ответ №5

с использованием форматирования строк старого стиля:

>>> x = 10 >>> y = 20 >>> z = int(‘%d%d’ % (x, y)) >>> print z 1020 Ответ №6

Просто чтобы дать другое решение:

def concat_ints(a, b): return a*(10**len(str(b)))+b >>> concat_ints(10, 20) 1020 Ответ №7

С помощью этой функции вы можете объединить столько чисел, сколько хотите

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.

Ответ №8def 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 Ответ №9

Хорошим способом было бы использовать встроенную функцию reduce():

reduce(lambda x,y:x*10+y,[10,20])

Оцените статью
Добавить комментарий