Python初心者向け|文字列から数字リストを作る2つの方法(内包表記 vs forループ)を徹底解説
Contents
はじめに:文字列をどうやって数字に変換するのか?
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ループ:処理の流れを掴む練習に、また柔軟な実装に最適
コメントを送信