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

ながみえ
【Python学習記事のアイキャッチ画像】Lesson4-6 リストのループ処理を理解しよう

一つ前の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副業)

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson4-5 リストのスライスを理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson4-7 リストの内包表記を理解しよう

for文×リストでできるループ処理の基本と実例

リストのループ処理は、for 文で要素を順番に取り出して処理する最も基本的なテクニックです。

この知識を身につけると、集計(合計・平均)・整形(文字列の加工)・抽出(条件フィルタ)・変換(新しいリストの作成)といった日常的なリスト処理を、読みやすく・バグを生みにくく書けるようになります。

読み終える頃には、「リストをどう回すか」を迷わず選べるはずです。さっそく基本の回し方から見ていきましょう。

【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

リストのループ処理とは|基本的な書き方

リストのループ処理とは、リストに含まれている複数の要素に対して繰り返し処理を行う操作のことです。

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文を使うことでリストのすべての要素に対して簡単に繰り返し処理を行うことができ、条件付き処理やネストされたループを使用することで、さらに柔軟な処理が可能になります。

これらの基本的なループ処理を理解することで、複雑なデータ処理がより簡単になりますので、ぜひ練習してみてください。

Q
サイト改善アンケート|ご意見をお聞かせください(1分で終わります)

本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。

1分だけ、ご協力いただけますと幸いです。

【Python】サイト改善アンケート
1.このサイトをどのように活用していますか?また、今後どのように活用したいですか?
5.気になっているサービス・商品があれば教えてください。
(複数選択可)
※ 特定の記事に関する内容の場合は、記事番号(Python Lesson〇-〇)をご記入願います。

練習問題:リストのループ処理を使ってみよう

この記事で学習した「リストのループ処理」を復習する練習問題に挑戦しましょう。

【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からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1:入力リストを用意し、for文で各要素を二乗して別リストに集める処理
 ・1から9までの連続した整数を持つリストを用意する
 ・結果を入れる空のリストを先に作っておく
 ・for文で元のリストを先頭から順に取り出して処理する
 ・計算した結果はリストの末尾に追加する

2:結果リストを3要素ごとに区切り、各行をカンマ区切りで表示する処理
 ・繰り返しの回し方は range(開始, 終了, ステップ) の3引数を使う。
 ・終了位置は リストの長さを使って決める。
 ・各周回では 先頭インデックス i を基準に連続する3要素(i, i+1, i+2) を取り出す。
 ・1行の文字列は カンマで連結し、空白は入れない(実行結果例と同じ形式)。
 ・毎回1行ずつ表示するイメージで進める。

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 1から9までの数をリストに格納
''' (穴埋め)numbers に 1〜9 の整数を格納したリストを作成する '''

# 空のリストに各数値の2乗を格納
squared_numbers = []

# ループ処理で各数値の2乗を計算し、リストに追加
for number in numbers:
    squared_numbers.'''(穴埋め)'''(number ** 2)

# 3つずつ出力するためのループ
''' (穴埋め)3つずつ取り出してカンマ区切りで表示する for ループを書く '''

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

解答例|二乗リストを3つずつ出力するプログラム

例えば以下のようなプログラムが考えられます。

Q
正解コード
# 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つずつ出力するプログラムの考え方

解答例の詳細解説は以下の通りです。

Q
詳細解説

入力リストを用意し、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行に分かれます。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいPython学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson4-5 リストのスライスを理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson4-7 リストの内包表記を理解しよう

リストのループ処理の疑問解消|FAQと用語のまとめ

初心者がつまずきやすいポイントをFAQとしてまとめ、またよく使う専門用語をわかりやすく整理しました。

理解を深めたいときや、ふと疑問に感じたときに役立ててください。

FAQ|リストのループ処理に関するよくある質問

Q
Q1. for文とwhile文、リスト処理に向いているのはどちら?

リストを順番に処理する場合はfor文が最適です。while文は繰り返し条件が明確でない場合などに向いています。

Q
Q2. ループ中にリストを変更するとどうなりますか?

予期しない動作になることがあります。要素の削除や追加はループの外で行うか、コピーを作成してから処理するのが安全です。

Q
Q3. enumerate()を使うと何が便利になりますか?

リストの要素とそのインデックスを同時に扱えるため、位置情報が必要なループ処理で非常に便利です。

Python用語集|リストのループ処理に関する用語一覧

今回の記事で出てきた用語・関数などを一覧で紹介します。

このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。

Python用語定義・使い方の概要解説記事へのリンク
リスト複数の値を順番に格納できるデータ構造。繰り返し処理や要素の操作に柔軟に対応できるLesson4-1
forシーケンス(例:リスト)の各要素を順に処理するループ構文。繰り返し処理の基本構文の一つLesson2-5
ネスト制御構文やデータ構造の中に同種の構造を入れ子状に記述すること。例:for 文の中の for 文など本記事
記事URLをコピーしました