40

Pythonで2つの整数を連結するにはどうすればよいですか? たとえば、 と が与えられ1020場合、 の戻り値が必要"1020"です。

4

14 に答える 14

58

両方を文字列にキャストし、文字列を連結してから、結果を整数にキャストします。

z = int(str(x) + str(y))
于 2012-10-11T11:33:56.417 に答える
15

数学を使用することは、おそらく str に変換して戻すソリューションよりも高速です。

2 桁の秒数を想定できる場合:

def f(x, y):
    return x*100+y

使用法:

>>> f(1,2)
102
>>> f(10,20)
1020

ただし、2 番目の数字が 2 桁を超えていないことを確認するために、いくつかのチェックを含めることをお勧めします。または、2 番目の数字が任意の桁数である場合は、次のようにすることができます。

import math
def f(x, y):
    if y != 0:
        a = math.floor(math.log10(y))
    else:
        a = -1

    return int(x*10**(1+a)+y)

使用法:

>>> f(10,20)
1020
>>> f(99,193)
99193

ただし、このバージョンでは、03 や 02 などの数値をマージして 0302 を取得することはできません。そのためには、引数を追加して各整数の桁数を指定するか、文字列を使用する必要があります。

于 2012-10-11T11:40:37.017 に答える
5

古いスタイルの文字列フォーマットを使用:

>>> x = 10
>>> y = 20
>>> z = int('%d%d' % (x, y))
>>> print z
1020
于 2012-10-11T11:38:33.647 に答える
4

もちろん、「正しい」答えはコンスタンチンの答えです。しかし、文字列キャストを使用せずに、数学だけでそれを行う方法を知りたい場合は、次のようにします。

import math

def numcat(a,b):
    return int(math.pow(10,(int(math.log(b,10)) + 1)) * a + b)

>> numcat(10, 20)
>> 1020
于 2012-10-11T11:43:32.820 に答える
3

大雑把だが機能する実装:

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

基本的には、2 つの数値を 1 つの文字列にマージし、それを int にキャストするだけです。

于 2012-10-11T11:37:38.830 に答える
3

Pythonでこれを行う最良の方法は、受け入れられた回答で与えられました-しかし、jinja2テンプレートでこれを行いたい場合-連結演算子~は、すべてのオブジェクトのユニコード表現を探すため、これを行うためのきちんとした方法を提供します。したがって、 「整数を連結」することもできます。

つまり、これを行うことができます(与えられたa=10およびb=20):

{{ a ~ b }}
于 2013-12-23T00:03:07.887 に答える
2

別の解決策を提供するだけです:

def concat_ints(a, b):
    return a*(10**len(str(b)))+b

>>> concat_ints(10, 20)
1020
于 2012-10-11T11:41:11.603 に答える
2

この関数を使用すると、必要な数の数値を連結できます

def concat(*args):
    string = ''
    for each in args:
        string += str(each) 
    return int(string)

たとえば、整数concat(20, 10, 30)を返します201030

また

1行のプログラムを使用できます

int(''.join(str(x) for x in (20,10,30)))

これも を返し201030ます。

于 2012-10-11T11:50:28.320 に答える
-1
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
于 2014-06-24T19:41:44.367 に答える