Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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関数を選ぶとよいでしょう。

  1. 【Python】文字列のリストをリストのリスト(ネストしたリスト)に変換する方法

    Pythonでは、文字列として格納された複数のリストを、実際の「リストのリスト」(ネストしたリスト構造)へ変換したい場面があります。例えば、[[0, 1, 2, 3], [Mon, Tue, Wed, Thu]] のような文字列のリストを、各要素が個別のリストになる形に整形するケースです。この記事では、文字列のリストをリストのリストへ変換する代表的な2つの方法を、サンプルコードと実行結果とともにわかりやすく解説します。方法1:strip()とsplit()を組み合わせるstrip()メソッドで文字列の前後にある角括弧 [] を取り除き、その後 split()メソッドでカンマ区切りに分割します。

  2. Pythonで文字列のリストをリストのリスト(ネストしたリスト)に変換する方法

    この記事では、文字列型のデータを含むリストから、リストのリスト(入れ子構造のリスト)を作成する方法を解説します。元のリストには、リスト形式の文字列が要素として格納されており、それらを個々の要素に分解して、真のリスト構造へと変換していきます。strip()とsplit()を使う方法まず紹介するのは、strip()とsplit()の2つのメソッドを組み合わせる方法です。strip()で各文字列から不要な角括弧「[ ]」を取り除き、その後split()を使ってカンマ区切りで要素を分割することで、リストのリストを生成できます。コード例list1 = [ [0, 1, 2, 3],[Mon, Tue,