【レッスン4-06】リストの要素をfor文でループ処理させよう|Pythonデータ構造

一つ前の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を用いたアプリ開発
for文×リストでできるループ処理の基本と実例
ここからリストのループ処理の説明に入ります。
ページ下部にはこのページで出てくる用語の意味をまとめた 用語集 もありますので、分からない言葉が出てきたらそちらも参考にしてください。
Pythonではリストの要素を効率的に処理するために「ループ処理」をよく使用します。
ループを使うことで、リストに含まれる複数の要素に対して同じ操作を繰り返すことができ、簡潔なコードで多くの処理を行うことができます。
リストのループ処理とは?
リストのループ処理とは、リストに含まれている複数の要素に対して繰り返し処理を行う操作のことです。
Pythonでループ処理を行うには主にfor
文を使用します。for
文を使うことでリストの先頭から最後の要素までを順に処理できます。
基本的な書式は次の通りです。
for 要素 in リスト: 処理内容
この構文ではリスト内の各要素が順番に要素
に代入され、それに基づいて処理内容
が実行されます。
これによりリスト全体に対して一度に同じ操作を行うことができます。
リストのループ処理の使用例
続いてリストをループして各要素を処理する基本的な例を紹介します。
# リストを定義 fruits = ["apple", "banana", "cherry", "date"] # リストの各要素をループして出力 for fruit in fruits: print(fruit)
このコードを実行すると以下のように出力されます。
apple banana cherry date
このコードではリストfruits
に含まれる各フルーツ名が順番に変数fruit
に代入され、print(fruit)
が実行されることですべての要素が表示されます。
このようにfor
文を使うことでリスト内のすべての要素に対して同じ処理を簡単に行えます。
次にリスト内の数値を使ってより複雑な処理を行う例を見てみましょう。
# 数値のリストを定義 numbers = [1, 2, 3, 4, 5] # 各数値の2乗を出力 for number in numbers: square = number ** 2 print(f"{number}の2乗は{square}です")
このコードを実行すると以下のように出力されます。
1の2乗は1です 2の2乗は4です 3の2乗は9です 4の2乗は16です 5の2乗は25です
このようにリスト内の数値を使った計算や条件付きの処理も簡単に行うことができます。
リストのループ処理の応用
リストのループ処理は単純な出力だけでなく、条件付き処理やネストされたループなどの応用的な使い方もできます。
例えば、条件付きで特定の要素だけを処理する場合にはif
文を併用します。
# 偶数だけを処理する numbers = [1, 2, 3, 4, 5, 6] for number in numbers: if number % 2 == 0: print(f"{number}は偶数です")
このコードを実行すると以下のように出力されます。
2は偶数です 4は偶数です 6は偶数です
この例ではリストnumbers
内の要素のうち、偶数のみを条件付きで処理しています。
またループをネストすることで、二次元リストのような複雑なデータ構造を処理することも可能です。
まとめ
Pythonのリストのループ処理はデータを効率的に処理するための強力なツールです。
for
文を使うことでリストのすべての要素に対して簡単に繰り返し処理を行うことができ、条件付き処理やネストされたループを使用することで、さらに柔軟な処理が可能になります。
これらの基本的なループ処理を理解することで、複雑なデータ処理がより簡単になりますので、ぜひ練習してみてください。
練習問題: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:リスト
numbers
の定義
2:空のリストsquared_numbers
を定義
3:for文によってリストnumbers
の各要素をループ処理
□ループ内で要素の2乗を計算し、リストsquared_numbers
に追加
4:3つずつ表示するためのforループの開始
□squared_numbers
の要素を3つずつ取り出して表示
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 1から9までの数をリストに格納 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 空のリストに各数値の2乗を格納 squared_numbers = [] """【穴埋め問題1】 ここにループ処理を使って、リストnumbers内の各要素を2乗し、squared_numbersに追加するコードを書いてください。 """ """【穴埋め問題2】 ここにリストsquared_numbersの要素を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]}")
正解例の詳細解説
このコードではPythonのリストに対してループ処理を行い、各要素を2乗し、その結果を3つずつ表示する方法を学びます。
以下でコードの各ブロックを初心者向けに解説します。
- 詳細解説
-
リストの定義
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
まず
numbers
というリストを定義しています。このリストには1から9までの整数が格納されています。リストは
[]
で囲み、複数の値をまとめて扱うことができる便利なデータ構造です。空のリストの作成
squared_numbers = []
ここでは
squared_numbers
という空のリストを定義しています。このリストには後で
numbers
リストの各要素を2乗した結果が格納されます。初期状態では空のリストを作成し、ループ処理の中で要素を追加していきます。ループで各要素を2乗してリストに追加
for number in numbers: squared_numbers.append(number ** 2)
for
文を使ってnumbers
リストの各要素に対して処理を行っています。このループはリストの要素を1つずつ
number
に代入し、number ** 2
で2乗を計算します。その結果をappend()
メソッドを使ってsquared_numbers
に追加しています。3つずつ要素を表示するループ
for i in range(0, len(squared_numbers), 3): print(f"{squared_numbers[i]},{squared_numbers[i+1]},{squared_numbers[i+2]}")
range()
関数を使いsquared_numbers
リストの要素を3つずつ取り出して表示しています。このループでは
i
を使って3つの要素をまとめて出力しています。リスト内のデータを部分的に取り出し、カンマで区切って表示する便利な方法です。まとめ
このコードではリストを使ってループ処理を行い、計算結果を整理して出力する方法を学びました。
リストのループ処理はデータを一括で処理する際に非常に有効です。この基本を理解しておくことで、より複雑なデータ操作にも対応できるようになります。
Python用語集|リストのループ処理編
今回の記事で出てきた用語・関数などを一覧で紹介します。
このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。
Python用語 | 定義・使い方の概要 | 解説記事へのリンク |
---|---|---|
リスト | 複数の値を順番に格納できるデータ構造。繰り返し処理や要素の操作に柔軟に対応できる | Lesson4-1 |
for 文 | シーケンス(例:リスト)の各要素を順に処理するループ構文。繰り返し処理の基本構文の一つ | Lesson2-5 |
ネスト | 制御構文やデータ構造の中に同種の構造を入れ子状に記述すること。例:for 文の中の for 文など | 本記事 |
FAQ|Pythonリストのループ処理
- Q1. for文とwhile文、リスト処理に向いているのはどちら?
-
リストを順番に処理する場合は
for
文が最適です。while
文は繰り返し条件が明確でない場合などに向いています。
- Q2. ループ中にリストを変更するとどうなりますか?
-
予期しない動作になることがあります。要素の削除や追加はループの外で行うか、コピーを作成してから処理するのが安全です。
- Q3. enumerate()を使うと何が便利になりますか?
-
リストの要素とそのインデックスを同時に扱えるため、位置情報が必要なループ処理で非常に便利です。