ループ文(for文)と内包表記
ループ文
ループ文とは、条件が満たされている間与えられた処理を繰り返し行うコードのことを言います。ここではイテラブルを繰り返し処理するfor
ループについて説明します。「イテラブル」とは繰り返し処理で要素を取り出すことができるオブジェクトのことで、今までで出てきたものでは文字列やリスト、タプル、辞書があります。 for
ループの構文は以下の通りです。
for <変数名> in <イテラブル>:
処理コード
ここで、<変数名>
はイテラブル
の要素が順番に割り当てられます。1つめの要素が<変数名>
に割り当てられると次に処理コード
の記載内容が実行されます。そこまでで1ループとなります。2ループ目ではイテラブル
の次の要素が<変数名>
に割り当てられ、そのまま処理コード
が実行されます。for
ループではイテラブル
の要素が尽きるまでこのループを繰り返します。
例を見てみましょう。
for string in 'Python':
print(string)
P
y
t
h
o
n
enumerate
関数を使うことで、要素のインデックスも同時に取得することができます。
for idx, string in enumerate('Python'):
print(idx)
print(string)
0
P
1
y
2
t
3
h
4
o
5
n
range
関数を使うことで、処理を指定した回数だけ繰り返すfor
ループを書くことができます。
for i in range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
始まりと終わりを指定することもできます。
# 1から始めて10になると終わる
for i in range(1,10):
print(i)
1
2
3
4
5
6
7
8
9
間隔を指定することもできます。
# 1から始めて間隔2で処理を実行し、10になると終わる
for i in range(1,10,2):
print(i)
1
3
5
7
9
numbers
リストにある値の2乗の値を新しいリストに格納してみましょう。
square = [] # 2乗の値を格納する新しいリスト
for i in numbers:
square.append(i**2)
print(square)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
内包表記
「ループ文」の最後で、numbers
リストにある値の2乗の値を新しいリストに格納するコードを書きました。Pythonではこのコードを内包表記と呼ばれる簡略化された方法で書くことができます。内包表記は使い方次第でコードを簡潔にすることができる反面、コードの解読を困難にする場合もあります。
numbers
リストにある値の2乗の値を新しいリストに格納するコードを内包表記を用いた書くと次のようなコードになります。
[i**2 for i in numbers]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]