Python for文の使い方 range(), enumurate(), break, continueの使い方

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なのでループを抜けます
スポンサーリンク
スポンサーリンク