【Python入門】pythonのfor文の使い方をマスターしよう
18/12/02 14:36:33 19/05/05 16:19:55
Pythonに限った話ではありませんが、for文はプログラミング言語全般において超重要概念です。そのため、Pythonをベースに理解しておけば他のプログラミング言語を学習する際にも楽になります。for文の概念が登場しないプログラミング言語はまずありません。
そこでこのページでは、Pythonのfor文の基本的な書き方から、breakやcontinueを用いたちょっとした応用まで解説します。
目次
Pythonのfor文記述方法
まずPythonのfor文の基本的な書き方ですが、以下のようになります。
for 変数 in オブジェクト:
実行する処理
他のプログラミング言語のfor文を見たことのある方は、Pythonのfor文が少し特殊な書き方をしていることに気付かれたかと思います。文法だけだとわかりにくいかと思うので、サンプルコードを見てみましょう。
animals = ['dog', 'cat', 'bear']
for a in animals:
print (a)
宣言部分等は省略しています。上記のソースコードを実行すると、以下のようにコンソール出力されます。
dog
cat
bear
Pythonは全体的にコードがシンプルですが、for文についても簡略化されています。初期値やインクリメントの記述をしなくても、変数と配列だけ指定すれば配列分勝手にループを回してくれます。
C言語やJavaの経験がある方からすると、Pythonの魅力を一つ発見されたかもしれません。また他の言語では初期値とインクリメントを設定する場合が多いですが、Pythonの場合以下のような方法でカウントを出力できます。
for num in range(10):
print(num)
上記のソースコードを実行すると、以下のようにコンソール出力されます。
0
1
2
3
4
5
6
7
8
9
10
このようにrangeで数を指定できます。引数が一つだと上のように0からカウントされますが、引数を二つ設定することで0以外の数値から出力することも可能です。
for num in range(10, 20):
print(num)
このように記述すれば、以下のようにコンソール出力されます。
10
11
12
13
14
15
16
17
18
19
20
10~20の数字が出力されました。またrangeのなかでインクリメントする数を指定することも可能です。
for num in range(0, 10, 3):
print(num)
上記のソースコードを実行すると、以下のようにコンソール出力されます。
0
3
6
9
3つ目の引数がインクリメントする数になっているため、3ずつインクリメントしています。
for文の応用的な使い方
Pythonのfor文の基本は上記の通りですが、次にbreakやcontinueを用いた応用的な用法について解説します。応用と言っても特別難しいものではないので、頭を悩ませることはないかと思います。
breakの使い方
for文のなかでbreakを使用するサンプルコードは以下のようになります。
for num in range(30):
print num
if num == 10
break
上記のソースコードを実行すると、以下のようにコンソール出力されます。
0
1
2
3
4
5
6
7
8
9
10
for文のなかにif文がありますが、カウントが10に来たタイミングでif文に入ります。そこでbreakが実行され、ループを抜け出します。ループを抜けた後は戻ることはないため、カウントは10で終了しています。
continueの使い方
continueを使用したサンプルコードは以下です。
for num in range(2, 10):
if num % 2 == 0:
print("偶数", num)
continue
print("奇数", num)
上記のソースコードを実行すると、以下のようにコンソール出力されます。
偶数 2
奇数 3
偶数 4
奇数 5
偶数 6
奇数 7
偶数 8
奇数 9
偶数の場合if文に入るため、偶数 数字、という形で出力されます。しかし、if文のなかにcontinueがあるのでそれ以降のコードは実行されずに次のループに入ります。つまり奇数 数字、という出力は実行されません。
逆に奇数の場合if文には入らないため、奇数 数字、が出力されます。breakの場合ループ処理そのものを終了されますが、continueの場合ループをいったん抜けて移行の処理を行わないだけで、次のループは回ります。
for-else文の使い方
else文はif文と対比させて使うものですが、構成上for文と対比させるような記述方法を取ることも可能です。システム的にはif文と対応しているのですが、インデント上、ロジック上はfor文と対比させるようなイメージです。実際のサンプルコードを見てみましょう。
scores = [200, 150, 250, 101, 290] # 100点以下はないので合格
for score in scores:
if score <= 100:
print('不合格')
break
else:
print('合格')
ボーリングのスコアをイメージして書いたものですが、100点以下の人が一人でもいると不合格になってbreakする仕様になっています。ループしながら一人ずつ判定していきますが、100点以下でない場合は「合格」と出力します。
実際のボーリングのプロ試験はアベレージ200以上でないといけなかったと記憶していますが、上記のプログラムは遊びのボーリングなので100点以上で合格になっています。またインデントについてですが、forとelseが対比する形になっています。
プログラミング的には後ろのelseはif文と対応しています。なぜなら、for文のなかでif文に入らなかったときに実行されるからです。しかし人間の思考的にはfor文と対応させて考えた方がわかりやすいため、for文と対応するインデントになっています。
enumerateの使い方
配列の要素と一緒にインデックスも取得したい場合、enumerateを使用します。具体的には以下のようになります。
l = ['Takeshi', 'Masaki', 'Kasumi']
for i, name in enumerate(l):
print(i, name)
# 0 Takeshi
# 1 Masaki
# 2 Kasumi
このようにenumerateを使用することで、要素にナンバリングして出力されました。
zipの使い方
zipは要素を複数の変数として取得するための関数です。具体的には以下のように使用します。
names = ['Takeshi', 'Masaki', 'Kasumi']
ages = [40, 50, 30]
for name, age in zip(names, ages):
print(name, age)
# Takeshi 40
# Masaki 50
# Kasumi 30
このように、zipを使用することで名前と年齢の両方を出力しました。もともとは別の配列に入っていたものをまとめて出力可能です。同じ方法で、3つ以上の要素を出力することも可能です。
また、enumerateとzipを組み合わせて使用することもできます。そうすると以下のようになります。
names = ['Alice', 'Bob', 'Charlie']
ages = [24, 50, 18]
for i, (name, age) in enumerate(zip(names, ages)):
print(i, name, age)
# 0 Takeshi 40
# 1 Masaki 50
# 2 Kasumi 30
このように、番号、名前、年齢を表示できます。他にもfor文と組み合わせて使える関数は存在しますが、まずは基本的な用法を押さえておけば問題ないかと思います。
Pythonのフリーランス案件情報をチェック
Python関連記事
1, 【Pythonのフリーランス求人・案件情報】エンジニア開発単価は?未経験でもいける?
2, Pythonエンジニアが語る、Python始めるなら見るべきサイト5選
3, 【みてわかる】pythonのインストール方法をまとめてみた
4, Pythonを簡単にインストール出来るanacondaの使い方
5,(この記事)【Python入門】pythonのfor文の使い方をマスターしよう
6, Pythonのif文の使い方を解説!演算子もおさらい
7, Pythonの配列を徹底解説!宣言や追加・削除など
8, Pythonでできることとは?人工知能で強みを発揮!
9, Pythonの正規表現とは?使い方や種類について解説
10, なぜ今機械学習が注目されているのか?Pythonでの勉強方法も解説
11, Pythonでのコメントとコメントアウトの書き方をまとめました
人気記事