PR

【Python】for文の使い方とコツを3分でわかりやすく解説

Python

Pythonのforは、指定された操作をリストや文字列などのデータの各要素に対して繰り返し実行するための構文です。

参考 Pythonとは?(特徴とできること)

for文をうまく利用することで、一連の同じ操作を効率よく行うことができます。

numbers = [1, 2, 3, 4, 5]  # 数字のリストを作成

for num in numbers:  # リストnumbersの各要素に対して以下の処理を行う
    print(num)  # numを表示

# 実行結果:
# 1
# 2
# 3
# 4
# 5

このページではPython初心者の方向けに、for文の使い方を1からわかりやすくサンプルコード付きで解説します。

このページで学べる内容
  • 【前提】繰り返し処理とは?
  • for文の使い方
  • for文を利用する際の注意点

Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください

参考 Pythonの基本的な書き方・構文ルール

スポンサーリンク

前提:繰り返し処理とは?

「繰り返し実行」とは、特定のプログラムのコードブロック(つまり、命令の集まり)を何度も実行することを指します。この概念はプログラミングの基本的な要素の1つで、特定のタスクを指定した回数だけ、または特定の条件が満たされるまで実行するために使用されます。

繰り返し実行は主に2つの形式で現れます:「カウント制御ループ」と「条件制御ループ」です。

カウント制御ループ(for文で実現)

カウント制御ループは「指定された回数だけ何かを行う」というタスクに対応します。

例えば、「5回"こんにちは"と言ってください」と言われた場合、それを実行するには、"こんにちは"と言う行為を5回繰り返す必要があります。

Pythonのfor文を使ったプログラムでは、以下のように表現します。

for i in range(5):
    print("こんにちは")

# 実行結果:
# こんにちは
# こんにちは
# こんにちは
# こんにちは
# こんにちは

参考 print関数の使い方

このコードでは、"こんにちは"という文字列を5回表示します。range(5)は0から4までの数値を生成するので、for文はこの5回分の数字(つまり5回)を使ってループ(繰り返し)を作ります。

for文の使い方については後ほど詳しく解説します。

条件制御ループ(while文で実現)

条件制御ループは、特定の条件が満たされるまで何かを行うというタスクに対応します。

例えば、「お腹が空くまでリンゴを食べ続けてください」と言われた場合、お腹が空くという条件が満たされるまでリンゴを食べ続ける必要があります。

Pythonのwhile文を使ったプログラムでは、以下のように表現します。

stomach = 0  # お腹の状態を0とする(0は空腹を、10は満腹を表すとします)

while stomach < 10:  # お腹がまだ満腹でない場合
    print("リンゴを食べる")
    stomach += 1  # リンゴを1個食べるとお腹の状態を1だけ増やす

参考 while文の使い方 / 代入演算子(+=)

このコードでは、お腹が満腹になるまで(つまりstomachが10になるまで)"リンゴを食べる"と表示し続けます。

これらのループは、特定のタスクを指定した回数だけ実行するか、特定の条件が満たされるまで続けるかといった繰り返しの操作をコード化するための非常に重要なツールです。

前提をしっかり押さえたところで、カウント制御ループであるfor文の使い方について詳しく見ていきましょう。

Python:for文

Pythonのfor文は、指定された操作をリストや文字列などのデータの各要素に対して繰り返し実行するための構文です。

構文ルールは以下の通り。

for 変数 in シーケンス:
    # シーケンスの各要素(変数)を使った処理

ここで「シーケンス」はリストや文字列などの反復可能なデータを指し、「変数」はそのシーケンスの各要素を一つずつ受け取るためのものです。

参考 リストとは? / 変数とは?

文字だけでは分からない部分もあると思うので、早速サンプルコードを見ていきましょう。

numbers = [1, 2, 3, 4, 5]  # 数字のリストを作成

for num in numbers:  # リストnumbersの各要素に対して以下の処理を行う
    print(num)  # numを表示

# 実行結果:
# 1
# 2
# 3
# 4
# 5

このプログラムは1から5までの各数字を順番に表示します。リストnumbersの各要素が一つずつnumに代入され、そのnumを使ってprint(num)という処理が行われます。結果、1~5の数字が出力されるという仕組み。

わかりやすく言うと「for文は指定したオブジェクトから要素を順番に取得し、その要素の数だけ処理を繰り返す」処理を行うということ。

リストだけでなく、他の集合・辞書・タプル、さらには文字列に対してもfor文を利用することが可能です。

サンプル 文字列に対するforループ

文字列は文字のシーケンスとみなすことができます。したがって、forループを使って文字列の各文字を順に処理することができます。

word = "Hello, World!"

for letter in word:
    print(letter)
# 実行結果:
# H
# e
# l
# l
# o
# ,
#  
# W
# o
# r
# l
# d
# !

サンプル 辞書に対するforループ

辞書はキーと値のペアの集合です。forループを使うと、辞書のキーまたは値、または両方に対して処理を行うことができます。

my_dict = {"apple": "red", "banana": "yellow", "grape": "purple"}

for key in my_dict:
    print(key)

# 実行結果:
# apple
# banana
# grape

for value in my_dict.values():
    print(value)

# 実行結果:
# red
# yellow
# purple

for key, value in my_dict.items():
    print(f"The {key} is {value}")

# 実行結果:
# The apple is red
# The banana is yellow
# The grape is purple

サンプル タプルに対するforループ

タプルもリストと同じように要素のシーケンスですが、タプルの要素は変更できません。タプルに対するforループの使い方はリストと同じです。

my_tuple = ("apple", "banana", "grape")

for item in my_tuple:
    print(item)

# 実行結果:
# apple
# banana
# grape

サンプル セットに対するforループ

セット(集合)は重複する要素を含まないアイテムの集合です。セットに対するforループの使い方もリストやタプルと同じです。

my_set = {"apple", "banana", "grape", "apple"}

for item in my_set:
    print(item)
# 実行結果(セットの順序は保証されない):
# apple
# banana
# grape

以上のように、forループはPythonの様々なデータ構造に対して利用することができ、それぞれの要素に対して同じ操作を繰り返すために非常に便利です。

Python:for文の注意点

for文は使いこなせると便利な構文でもありますが、いくつか注意点も存在します。

最後に、for文を利用する際の注意点についてご説明します。

Python:for文 注意点①:繰り返し処理中のシーケンスの変更

forループ中にシーケンス(リストやタプル、文字列など)を変更すると、結果が予測しきれなくなる可能性があります。これはループが要素をどの順番で処理するかが変わってしまうためです。

繰り返し処理の中でシーケンスを変更する必要がある場合は、通常、シーケンスのコピーを作ってからループを行います。

# NGな例 - 繰り返し処理中にシーケンスを変更する
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num == 3:
        numbers.remove(num)
print(numbers)  # 結果は予期しないものになるかもしれません

# OKな例 - 繰り返し処理のためにシーケンスのコピーを作成する
numbers = [1, 2, 3, 4, 5]
for num in numbers.copy():
    if num == 3:
        numbers.remove(num)
print(numbers)  # 予期した結果が得られます

Python:for文 注意点②:変数のスコープ

forループ内で宣言された変数は、ループの外でも使用することが可能。しかし、一般的にはループの外でループ内部の変数を使用するのは避けた方が良いです。

ループ内部で生成された変数の値はループが終了した時点での最後の値となるため、プログラムが複雑になると予期しない結果を生じる可能性があります。

for i in range(5):
    temp = i * 2
print(temp)  # この時点でtempは最後のループの値、つまり8になる

Python:for文 注意点③:breakとcontinueの使用

breakはループを完全に終了させ、continueは現在のループをスキップして次のループに進むための命令です。

参考 breakとcontinueの違い

これらは制御フローをより細かく制御するのに便利ですが、使いすぎるとプログラムが複雑になり、読みにくくなる可能性があるため、注意して使用する必要があります。

for i in range(5):
    if i == 2:
        continue  # iが2のときのみ処理をスキップ
    print(i)
# 実行結果:
# 0
# 1
# 3
# 4

Python:for文 注意点④:無限ループの回避

理論的にはforループでは無限ループは発生しませんが、例えばリスト内包表記でリストを生成しながらそのリストをループするような場合などは注意が必要です。

無限ループが発生するとプログラムは止まらず、コンピュータのリソースを過剰に消費する可能性があります。

これらを意識しながらforループを使用すると、より効果的かつ安全にコードを書くことができます。

Python:for文のまとめ

Python:for文のまとめ
  • 基本:Pythonのfor文は、指定したシーケンス(リスト、タプル、文字列など)やイテラブル(反復可能なオブジェクト)の各要素に対して繰り返し処理を行うために使用されます。
  • 構文ルール
    1. for <変数> in <シーケンス>:
    2. forの後には変数名が来ます。この変数には、シーケンスの各要素が一つずつ代入されます。
    3. inの後には繰り返し処理を行いたいシーケンスやイテラブルを指定します。
    4. :の後には繰り返し実行したいコードブロック(インデントされた部分)を記述します。
  • 注意点
    • forループ中にシーケンスを変更しない。必要な場合はシーケンスのコピーを作ってからループを行う。
    • ループ内で宣言された変数はループの外でも使用できるが、基本的にはループの外で使わない。
    • breakcontinueは制御フローを細かく制御するのに便利だが、使いすぎるとコードが読みにくくなるので注意する。
    • 無限ループを避ける。例えば、リスト内包表記でリストを生成しながらそのリストをループするといった場合には特に注意が必要。
# 最初の2つの数
num1, num2 = 0, 1
# 数列を表示するためのリスト
fibonacci_sequence = [num1, num2]

# 次の8つの数を生成
for _ in range(8):
    num1, num2 = num2, num1 + num2
    fibonacci_sequence.append(num2)

# 数列を表示
for number in fibonacci_sequence:
    print(number)

このコードを実行すると、最初の10個のFibonacci数(0, 1, 1, 2, 3, 5, 8, 13, 21, 34)が表示されます。

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Python
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました