Python初心者向け|文字列から数字リストを作る2つの方法(内包表記 vs forループ)を徹底解説

はじめに:文字列をどうやって数字に変換するのか?

Pythonでユーザーから数値を入力させるとき、多くの場合 input() 関数を使用します。ところが、この input() が返す値は 文字列(str型) です。例えば、12345 と入力しても、実際に得られるのは "12345" という文字列になります。

「え、じゃあ計算できないの?」と思った方、ご安心ください。本記事ではこの文字列を 各桁ごとの整数に変換してリストにする方法 を2種類ご紹介します。

  • リスト内包表記(list comprehension)を使う方法
  • forループで1文字ずつ変換する方法

この2つの方法は、Python学習の基礎となる「文字列操作」「型変換」「リスト生成」のスキルを身につける上で欠かせません。実際のコード例を交えながら、違いや使いどころも丁寧に解説していきます。


Pythonにおける入力と文字列処理の基本

まず押さえておくべき基礎は次の通りです。

  • input() の戻り値は 常に文字列(str)
  • 数値として扱うには int() による型変換が必要
  • 各桁を取り出すには 文字列を1文字ずつ処理 する必要がある

たとえば "12345"[1, 2, 3, 4, 5] に変換したい場合、文字列から1文字ずつ取り出し、int() で整数化する処理を施します。


方法①:リスト内包表記で変換する方法

コード例

x = input("整数を入力してください: ")  # 例: "12345"
digits = [int(ch) for ch in x]
print(digits)  # 出力例: [1, 2, 3, 4, 5]

解説

このコードでは、リスト内包表記 [int(ch) for ch in x] を使って、文字列の各文字を int() によって整数に変換し、それをリストにまとめています。

  • for ch in x:文字列 x を1文字ずつループ
  • int(ch):各文字を整数に変換
  • []:それらをリストとしてまとめる

方法②:forループで逐次処理する方法

コード例

x = input("整数を入力してください: ")  # 例: "12345"
digits = []

for ch in x:
    num = int(ch)
    digits.append(num)

print(digits)  # 出力例: [1, 2, 3, 4, 5]

解説

こちらはより伝統的なスタイルで、処理の流れを1行ずつ丁寧に追うことができます。

  • 空のリスト digits を用意
  • 文字列 x を1文字ずつ取り出し
  • int(ch) で変換し、リストに追加

実用例で比較して理解を深めよう

各桁の合計を求める

リスト内包表記の場合:

x = input("整数を入力してください: ")
digits = [int(ch) for ch in x]
total = sum(digits)
print("各桁の合計:", total)

forループの場合:

x = input("整数を入力してください: ")
digits = []
total = 0

for ch in x:
    num = int(ch)
    digits.append(num)
    total += num

print("各桁の合計:", total)

偶数の桁だけ抽出する

x = input("整数を入力してください: ")
even_digits = [int(ch) for ch in x if int(ch) % 2 == 0]
print("偶数の桁:", even_digits)

どちらを使うべき?実装選択の基準

観点リスト内包表記forループ
可読性(初心者)△ やや難しい◎ 読みやすい
拡張性(条件分岐など)△ 制限あり◎ 柔軟に対応可能
コードの短さ◎ コンパクト△ 冗長になりやすい
処理の見通しやすさ△ 一行に詰まりがち◎ 各ステップが明確

結論として、シンプルな処理にはリスト内包表記処理が複雑化しそうなときはforループが向いています。


まとめ|基本処理をしっかり理解しよう

Pythonでの文字列から整数リストへの変換は、基礎でありながら応用の幅が広い非常に重要な技術です。

  • リスト内包表記:シンプルな変換に最適
  • forループ:処理の流れを掴む練習に、また柔軟な実装に最適

コメントを送信

You May Have Missed