最近Pythonを触る機会が増えてきたので少しずつ文法周りをメモしておく。
pythonのfor文は下記のデータ型に対して有効。
- 文字列
- リスト:[‘a’, ‘b’, ‘c’]
- タプル(イミュータブルなリスト):(‘a’, ‘b’, ‘c’)
- セット(集合):{‘a’, ‘b’, ‘c’}
- 辞書(連想配列):{‘a’: 1, ‘b’: 2, ‘c’: 3}
for文の書式
リストに対してfor文を実行するときは下記の書式で実行する。
for 変数 in データ:
処理
for文の対象となるデータはリストなども勿論だが文字列に対しても行うことができる。
for v in 'Hello':
print(v)
# H
# e
# l
# l
# o
リストで実行する時。
list = ['a', 'b', 'c']
for v in list:
print(v)
辞書に対してfor文を実行すると値ではなくインデックスが取得できる。
dict = {'1': 'one', '2': 'two', '3': 'three'}
for k in dict:
print(k)
# 1
# 2
# 3
辞書に対して1つのfor文でインデックスと値を取得したい場合はitems()メソッドを使用する。
dict = {'1': 'one', '2': 'two', '3': 'three'}
for k, v in dict.items():
print(k + ':' + v)
# 1:one
# 2:two
# 3:three
リストに対して1つのfor文でインデックスと値を取得したい場合はenumerate()メソッドを使用する。
list = ['a', 'b', 'c']
for k, v in enumerate(list):
print(k, v)
# (0, 'a')
# (1, 'b')
# (2, 'c')
指定回数ループを回す
range()を使用して指定した回数ループを回すことができる。
for v in range(5):
print(v)
# 0
# 1
# 2
# 3
# 4
range()は始点と終点の2つの引数を指定することも可能。
for v in range(1, 6):
print(v)
# 1
# 2
# 3
# 4
# 5
break – continue
while文と同様にfor文の中でもbreakとcontinueを使用することができる。
for v in range(10):
if v % 2 == 0:
continue
print(v)
# 1
# 3
# 5
# 7
# 9
for v in range(10):
if v == 5:
break
print(v)
# 0
# 1
# 2
# 3
# 4
for – else
普段phpを使っている人間としては見かけない表現なので面白い。
forのループの中でelseで分岐を使用できる。
これは「breakでなければelse文の内容を実行する」と言う意味になる。
for v in range(2, 20):
if v == 20:
break
else:
print(v)
# 19