done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

数値を桁ごとにリストに格納する方法,またその逆(Python)

小ネタ.プログラミングコンテストなどでよくある数字のn桁目の数を~などに綺麗に対処する方法

プログラミングコンテストなどでは,よくn桁ある数値を右にずらして…などの問題があります.そんなときに,よく行う操作が桁ごとの数値にバラしてリストや配列などに格納するorその逆を行うといった操作です

例えば,以下のような処理を想定します.

12345 -> [1,2,3,4,5]
[1,2,3,4,5] -> 12345

Pythonで,上記のような処理をスマートに行う方法を紹介します

>>> n = 12345
>>> l = [int(x) for x in list(str(n))]
>>> print(l)
[1, 2, 3, 4, 5]
>>> new_n = int(reduce(lambda x, y: x + y, [str(x) for x in l]))
>>> print(new_n)
12345

一回[1,2,3,4,5]などの形式にしてしまえば,n桁からm桁までの数値を取るといった処理も簡単です

……この記事書いて初めて知ったんですが,Python3系列ではreduce関数って組み込み関数じゃなくなったんですね.functoolsをimportしなきゃ使えないとは……