for文 基本
for文は任意のシーケンス(リストやタプルなど)から要素を一つずつ取り出して処理ができます。
記法
for 繰り返し変数 in シーケンス:
forループで実行するブロック
次の例はplanetsのリストから要素を一つづつ取り出して表示しています。
planets =['Mercury','Venus','Earth']
for planet in planets:
print(planet)
【結果】
Mercury
Venus
Earth
数列を使いたい時
任意の数列を使いたい場合、range()やenumrate()が役立ちます。
range(end)
range(end)は0からend-1までのシーケンスを生成します。endには1以上の整数を設定します。
range(end)はrange(0,end)と同じ意味です。
endに0以下の負の整数をセットすると何も生成されません。
seq = list(range(5))
print (seq)
for i in range(3):
print(i)
【結果】
[0, 1, 2, 3, 4]
0
1
2
range(start, end)
range(start, end)はstartからend-1までのシーケンスを生成します。start < endになるように設定します。
seq1 = list(range(6, 10))
seq2 = list(range(-6, -3))
print (seq1)
print (seq2)
【結果】
[6, 7, 8, 9]
[-6, -5, -4]
range(start, end, step)
range(start, end, step)はstartからend-1までのstepおきのシーケンスを生成します。
デフォルトではstepは1に設定されています。昇順、降順どちらでも作れます。
range(0, 10, 3)の場合は、0, 3, 6, 9のシーケンスを生成します。
for i in range(0,10,3):
print(i)
【結果】
0
3
6
9
rangeの制約
range r の式は r = start + step*i で決まり、
stepが正の時の制約条件は 0≦i, r[i] < stop
stepが負の時の制約条件は 0≦i, r[i] > stop
です。r[0]の時、値の制約を満たさない場合は空になります。
range(0)
range(1, 0)
range(0, -12, 3)
【結果】
[]
[]
[]
enumerate(iterable, start=0)
enumerate関数を使うとシーケンスのループを行う際、シーケンスの要素と、要素のインデックスを取り出すことができます。startを指定すると、インデックスはその番号からのカウントになります。
planets =['Mercury','Venus','Earth']
for i, planet in enumerate(planets):
print(str(i) + ': ' + planet)
for i, planet in enumerate(planets, start = 9):
print(str(i) + ': ' + planet)
【結果】
0: Mercury
1: Venus
2: Earth
9: Mercury
10: Venus
11: Earth
break文, continue文
break文はループの途中でループから抜け出します。
continue文はループを中断して次のループに移ります。
print('----- continue sample -----')
for i in range(4):
if i % 2 == 0:
print(i, 'は2で割り切れます')
continue
print(i, 'は2で割り切れません')
print('----- break sample -----')
for i in range(6):
if i > 1:
print(i,'> 1なのでループを抜けます')
break
【結果】
----- continue sample -----
0 は2で割り切れます
1 は2で割り切れません
2 は2で割り切れます
3 は2で割り切れません
----- break sample -----
2 > 1なのでループを抜けます
コメントを残す