Pythonで配列形式の整数に数値を加算する方法
ある整数が配列(リスト)形式で与えられている状況を考えてみましょう。例えば、数値が534の場合、[5, 3, 4] のように各桁が要素として格納されています。この配列形式の数値に対して、別の値 k を加算し、結果も同様に桁ごとの配列として返すのが課題です。
解法のアプローチ
この問題は、以下の手順で解くことができます。
- 配列内の各桁を文字列に変換し、それらを連結して1つの文字列を作る
- 連結した文字列を整数に変換し、k を加算する
- 計算結果を再び文字列に変換し、各桁を取り出して配列(リスト)を作成する
実装例
以下のコードは、上記の手順を実装したものです。動作をより深く理解するために参考にしてください。
class Solution(object):
def addToArrayForm(self, A, K):
num_A = int(''.join(str(i) for i in A))
res = list(str(num_A+K))
res = list(map(int,res))
return res
ob1 = Solution()
print(ob1.addToArrayForm([5,3,4], 78))入力
[5,3,4] 78
出力
[6,1,2]
コードの解説
まず ''.join(str(i) for i in A) によって、配列 [5, 3, 4] の各要素を文字列化して連結し、「534」という文字列を生成します。次に int() で整数に変換し、k(ここでは78)を加算することで 612 が得られます。最後に結果を文字列化して list() と map(int, ...) を使うことで、各桁を整数要素とするリスト [6, 1, 2] が完成します。
なお、この手法はシンプルで直感的ですが、非常に大きな桁数の数値を扱う場合は、桁ごとに繰り上がりを処理する方式の方が効率的な場合もあります。用途に応じて使い分けるとよいでしょう。
-
Python 3で入力された文字列が整数かどうか判定する方法
isdigit()メソッドを使った整数判定Pythonの文字列(str)クラスにはisdigit()という便利なメソッドが用意されています。このメソッドは、文字列に含まれるすべての文字が数字であり、かつ文字列が空でない場合にTrueを返し、それ以外の場合はFalseを返します。小数点を含む数値(float)を入力した場合も、ピリオドは数字ではないためFalseになります。Python 3ではinput()関数でユーザーからの入力を受け取るので、次のように記述します。>>> x = input() 12345 >>> x.isdigit() Trueこのように
-
【Python】文字列から整数値を抽出・取得する方法をわかりやすく解説
Pythonでは、正規表現(reモジュール)を使うことで、文字列の中から出現順にすべての整数値を抽出し、リストとして取得できます。以下のコード例をご覧ください。 正規表現ですべての整数値を抽出する import re s = 12 hello 52 19 some random 15 number # 数字部分を抽出し、int型に変換する list_of_nums = [int(n) for n in re.findall(r\d+, s)] print(list_of_nums) 出力結果 [12, 52, 19, 15] re.findall(r\d+, s) は、文字列 s から連続し