【Python】レッスン4-06:リストのループ処理を理解しよう

一つ前のLessonではリストのスライスについて学習しました。
今回はリストのループ処理について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数とスコープ編
Lesson4:データ構造編
・Lesson4-1:リストの定義と要素の追加を理解しよう
・Lesson4-2:リストの要素を削除しよう
・Lesson4-3:リストの情報を調べよう
・Lesson4-4:リストの集計・並べ替えを理解しよう
・Lesson4-5:リストのスライスを理解しよう
・Lesson4-6:リストのループ処理を理解しよう ◁今回はココ
・Lesson4-7:リストの内包表記を理解しよう
・Lesson4-8:リスト・タプル・辞書・集合の概要と違いを理解しよう
・Lesson4-9:タプルの基本を理解しよう
・Lesson4-10:タプルのアンパックを理解しよう
・Lesson4-11:辞書の基本を理解しよう
・Lesson4-12:辞書のループ処理を理解しよう
・Lesson4-13:辞書の内包表記を使ってリストから辞書を作ろう
・Lesson4-13:集合(セット)の基本を理解しよう
・練習問題4-1:宝探しゲームを作ろう
・練習問題4-2:ナインゲームを作ろう
・練習問題4-3:マルバツゲームを作ろう
Lesson5:オブジェクト指向編
次のステップ:Python基礎習得者にお勧めの道5選(実務or副業)
for文×リストでできるループ処理の基本と実例
リストのループ処理は、for
文で要素を順番に取り出して処理する最も基本的なテクニックです。
この知識を身につけると、集計(合計・平均)・整形(文字列の加工)・抽出(条件フィルタ)・変換(新しいリストの作成)といった日常的なリスト処理を、読みやすく・バグを生みにくく書けるようになります。
読み終える頃には、「リストをどう回すか」を迷わず選べるはずです。さっそく基本の回し方から見ていきましょう。
リストのループ処理とは|基本的な書き方
リストのループ処理とは、リストに含まれている複数の要素に対して繰り返し処理を行う操作のことです。
Pythonでループ処理を行うには主にfor
文を使用します。for
文を使うことでリストの先頭から最後の要素までを順に処理できます。
基本的な書式は次の通りです。
for 要素 in リスト: 処理内容
この構文ではリスト内の各要素が順番に要素
に代入され、それに基づいて処理内容が実行されます。
これによりリスト全体に対して一度に同じ操作を行うことができます。
リストのループ処理の使用例
リストをループして各要素を処理する基本的な例を紹介します。
# リストを定義 fruits = ["apple", "banana", "cherry", "date"] # リストの各要素をループして出力 for fruit in fruits: # リストfruitsの要素を順番に変数fruitに代入し print(fruit) # この処理を実行
このコードを実行すると以下のように出力されます。
apple banana cherry date
このコードではリストfruits
に含まれる各フルーツ名が順番に変数fruit
に代入され、print(fruit)
が実行されることですべての要素が表示されます。
このようにfor
文を使うことでリスト内のすべての要素に対して同じ処理を簡単に行えます。
次にリスト内の数値を使ってより複雑な処理を行う例を見てみましょう。
# 数値のリストを定義 numbers = [1, 2, 3, 4, 5] # 各数値の2乗を出力 for number in numbers: # リストnumbersの要素を順番に変数numberに代入し square = number ** 2 print(f"{number}の2乗は{square}です")
このコードを実行すると以下のように出力されます。
1の2乗は1です 2の2乗は4です 3の2乗は9です 4の2乗は16です 5の2乗は25です
このようにリスト内の数値を使った計算や条件付きの処理も簡単に行うことができます。
まとめ|リストの繰り返しを使いこなそう
Pythonのリストのループ処理はデータを効率的に処理するための強力なツールです。
for
文を使うことでリストのすべての要素に対して簡単に繰り返し処理を行うことができ、条件付き処理やネストされたループを使用することで、さらに柔軟な処理が可能になります。
これらの基本的なループ処理を理解することで、複雑なデータ処理がより簡単になりますので、ぜひ練習してみてください。
- サイト改善アンケート|ご意見をお聞かせください(1分で終わります)
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。1分だけ、ご協力いただけますと幸いです。
【Python】サイト改善アンケート
練習問題:リストのループ処理を使ってみよう
この記事で学習した「リストのループ処理」を復習する練習問題に挑戦しましょう。
問題|1から9までの数を2乗して3つずつ表示しよう
1から9までの数字をリストに格納し、その各要素を2乗した値を計算して、3つずつカンマで区切って表示するプログラムを作成してください。
Pythonのリストとループ処理を使って、繰り返し操作とリストの扱い方を学びましょう。
以下の要件に従ってコードを完成させてください。
- リスト
numbers
に1から9までの数を格納すること。 - ループ処理を使って、リスト内の各要素を2乗し、それを新しいリスト
squared_numbers
に格納すること。 squared_numbers
を3つずつ取り出し、カンマで区切って表示すること。
ただし、以下のような実行結果となるコードを書くこと。
1,4,9 16,25,36 49,64,81
ヒント|難しいと感じる人だけ見よう
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
1:入力リストを用意し、for文で各要素を二乗して別リストに集める処理
・1から9までの連続した整数を持つリストを用意する
・結果を入れる空のリストを先に作っておく
・for文で元のリストを先頭から順に取り出して処理する
・計算した結果はリストの末尾に追加する2:結果リストを3要素ごとに区切り、各行をカンマ区切りで表示する処理
・繰り返しの回し方はrange(開始, 終了, ステップ)
の3引数を使う。
・終了位置は リストの長さを使って決める。
・各周回では 先頭インデックスi
を基準に連続する3要素(i
,i+1
,i+2
) を取り出す。
・1行の文字列は カンマで連結し、空白は入れない(実行結果例と同じ形式)。
・毎回1行ずつ表示するイメージで進める。
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 1から9までの数をリストに格納 ''' (穴埋め)numbers に 1〜9 の整数を格納したリストを作成する ''' # 空のリストに各数値の2乗を格納 squared_numbers = [] # ループ処理で各数値の2乗を計算し、リストに追加 for number in numbers: squared_numbers.'''(穴埋め)'''(number ** 2) # 3つずつ出力するためのループ ''' (穴埋め)3つずつ取り出してカンマ区切りで表示する for ループを書く '''
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例|二乗リストを3つずつ出力するプログラム
例えば以下のようなプログラムが考えられます。
- 正解コード
-
# 1から9までの数をリストに格納 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 空のリストに各数値の2乗を格納 squared_numbers = [] # ループ処理で各数値の2乗を計算し、リストに追加 for number in numbers: squared_numbers.append(number ** 2) # 3つずつ出力するためのループ for i in range(0, len(squared_numbers), 3): # リストを3つずつ表示 print(f"{squared_numbers[i]},{squared_numbers[i+1]},{squared_numbers[i+2]}")
解答例の解説|二乗リストを3つずつ出力するプログラムの考え方
解答例の詳細解説は以下の通りです。
- 詳細解説
-
入力リストを用意し、for文で各要素を二乗して別リストに集める処理
# 1から9までの数をリストに格納 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 空のリストに各数値の2乗を格納 squared_numbers = [] # ループ処理で各数値の2乗を計算し、リストに追加 for number in numbers: squared_numbers.append(number ** 2)
最初に、1から9までの数字を並べた入れ物を用意します。
次に、結果を入れるための空の入れ物を準備します。
続いて、数字の入れ物を先頭から順番に取り出しながら、それぞれを二乗という同じ計算にかけ、計算した値を結果用の入れ物に次々と追加していきます。
処理が終わると、二乗だけが集まった新しい並びができあがります。
元の並びはそのまま残り、計算結果は別に保存されます。結果リストを3要素ごとに区切り、各行をカンマ区切りで表示する処理
# 3つずつ出力するためのループ for i in range(0, len(squared_numbers), 3): # リストを3つずつ表示 print(f"{squared_numbers[i]},{squared_numbers[i+1]},{squared_numbers[i+2]}")
二乗した値が入っている並びを、先頭から三つずつのまとまりに分けて、1行にまとめて表示していきます。
まとまりの区切りは、数を「3つずつ」数えながら進む仕組みで作ります。
各行では、取り出した三つの値をカンマでつなぎ、次の行に移ってまた三つ取り出す、という流れを最後まで繰り返します。
並びの長さを基準に、終わりまできちんと処理が届くように制御します。
今回のデータ数は9個なので、三つずつでちょうど3行に分かれます。
リストのループ処理の疑問解消|FAQと用語のまとめ
初心者がつまずきやすいポイントをFAQとしてまとめ、またよく使う専門用語をわかりやすく整理しました。
理解を深めたいときや、ふと疑問に感じたときに役立ててください。
FAQ|リストのループ処理に関するよくある質問
- Q1. for文とwhile文、リスト処理に向いているのはどちら?
-
リストを順番に処理する場合は
for
文が最適です。while
文は繰り返し条件が明確でない場合などに向いています。
- Q2. ループ中にリストを変更するとどうなりますか?
-
予期しない動作になることがあります。要素の削除や追加はループの外で行うか、コピーを作成してから処理するのが安全です。
- Q3. enumerate()を使うと何が便利になりますか?
-
リストの要素とそのインデックスを同時に扱えるため、位置情報が必要なループ処理で非常に便利です。
Python用語集|リストのループ処理に関する用語一覧
今回の記事で出てきた用語・関数などを一覧で紹介します。
このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。