【Python】数値を各桁のリストに変換する方法を解説
Pythonでデータ処理を行っていると、ある数値を「各桁の数字が要素となったリスト」に変換したい場面に出会うことがあります。例えば、1342という数値を [1, 3, 4, 2] のようなリストにするケースです。この記事では、その実現方法として代表的な2つのアプローチをサンプルコード付きで紹介します。
方法1:リスト内包表記を使う
まずstr関数で数値を文字列に変換し、その各文字に対してint関数を適用して整数に戻します。最後に、その結果をリストとしてまとめます。コードが簡潔で読みやすいため、最もよく使われる書き方です。
サンプルコード
numA = 1342
# 対象の数値
print("Given number : \n", numA)
res = [int(x) for x in str(numA)]
# 結果
print("List of number: \n", res)
実行結果
上記のコードを実行すると、次のような出力が得られます。
Given number : 1342 List of number: [1, 3, 4, 2]
方法2:map関数とstr関数を使う
こちらの方法では、まずstr関数で数値を文字列化し、続いてmap関数を使って各文字にint関数を繰り返し適用します。最後にlist関数で結果をリスト化します。大量のデータを扱う場合、リスト内包表記よりもわずかに高速になることがあります。
サンプルコード
numA = 1342
# 対象の数値
print("Given number : \n", numA)
res = list(map(int, str(numA)))
# 結果
print("List of number: \n", res)
実行結果
上記のコードを実行すると、次のような出力が得られます。
Given number : 1342 List of number: [1, 3, 4, 2]
補足:負の数を扱う場合
負の数をそのまま変換しようとすると、マイナス記号が文字列に含まれるためエラーが発生します。abs関数で絶対値を取得してから変換すると安全です。
numB = -5678 res = [int(x) for x in str(abs(numB))] print(res) # [5, 6, 7, 8]
まとめ
数値を桁ごとのリストに変換するには、「リスト内包表記」と「map関数」の2つの方法が便利です。どちらもstr関数で一度文字列化するのがポイントです。簡潔さを重視するならリスト内包表記、パフォーマンスを重視するならmap関数を選ぶとよいでしょう。
-
【Python】文字列のリストをリストのリスト(ネストしたリスト)に変換する方法
Pythonでは、文字列として格納された複数のリストを、実際の「リストのリスト」(ネストしたリスト構造)へ変換したい場面があります。例えば、[[0, 1, 2, 3], [Mon, Tue, Wed, Thu]] のような文字列のリストを、各要素が個別のリストになる形に整形するケースです。この記事では、文字列のリストをリストのリストへ変換する代表的な2つの方法を、サンプルコードと実行結果とともにわかりやすく解説します。方法1:strip()とsplit()を組み合わせるstrip()メソッドで文字列の前後にある角括弧 [] を取り除き、その後 split()メソッドでカンマ区切りに分割します。
-
Pythonで文字列のリストをリストのリスト(ネストしたリスト)に変換する方法
この記事では、文字列型のデータを含むリストから、リストのリスト(入れ子構造のリスト)を作成する方法を解説します。元のリストには、リスト形式の文字列が要素として格納されており、それらを個々の要素に分解して、真のリスト構造へと変換していきます。strip()とsplit()を使う方法まず紹介するのは、strip()とsplit()の2つのメソッドを組み合わせる方法です。strip()で各文字列から不要な角括弧「[ ]」を取り除き、その後split()を使ってカンマ区切りで要素を分割することで、リストのリストを生成できます。コード例list1 = [ [0, 1, 2, 3],[Mon, Tue,