2020年3月1日日曜日

【for文】繰り返し処理

 for文を使うと処理をあらかじめ決めた回数繰り返し行うことができる。またリストやタプルといったイテラブルオブジェクトと組み合わせることでイテラブルオブジェクトに含まれる要素の数だけ処理を繰り返すことができる。



1. for文の基本形

変数 in 範囲の形で変数と範囲を指定し範囲の後ろにセミコロンを書く。処理ブロックはインデントする(通常半角スペース4つ)。範囲の指定はrange関数を用いるかイテラブルオブジェクトと組み合わせる。

for 変数 in 範囲:
    処理


同様に繰り返し処理に用いられるwhile文との違いは以下の通り。
for文・・・rangeやイテラブルオブジェクトで指定した回数処理を繰り返す
while文・・・条件式がFalseになるまで処理を繰り返す



2. range関数による範囲指定

 for文により「1,2,3・・・10」のように決まった回数(範囲)で繰り返しを行いたい場合はrange関数を用いる。rangeの範囲から1つずつ値が順に取り出され変数に代入される。

for 変数 in range(終了値):
    処理


 0~4まで1つずつ取り出してiに代入する例。0から始まり終了値である5の1つ前の4まで。

for i in range(5):
    print(i)

実行結果

0
1
2
3
4


 range関数で開始値を指定すると任意の値から範囲を始められる。

for 変数 in range(開始値,終了値):
    処理


 1~4までの範囲を指定する例。指定した開始値1から始まり終了値である5の1つ前の4まで。

for i in range(1,5):
    print(i)

実行結果

1
2
3
4


 range関数でstepを指定すると飛び飛びに値を取り出すことができる。

for 変数 in range(開始値, 終了値, step):
    処理


 1~4まで1つおきに取り出してiに代入する例。指定した開始値1から始まり1つおきに終了値である5の1つ前の4まで。

for i in range(1, 5, 2):
    print(i)

実行結果

1
3


 stepをマイナスにすると大きい数字から小さい数字に値を下げることが可能。

for i in range(10, 5, -2):
    print(i)

実行結果

10
8
6


3. イテラブルオブジェクトによる範囲指定

 for文とリスト、タプル、文字列といったイテラブルオブジェクトを組み合わせ、要素の数だけ処理を実行することが可能。

for 変数 in イテラブルオブジェクト:
    処理


 文字列'あいうえお'に対してfor文を実行する例。'あ'から順に1文字ずつ取り出されその値が変数iに代入される。すべての文字を取り出し終わるとforループが終了する。

for i in 'あいうえお':
    print(i)

実行結果

あ
い
う
え
お


 イテラブルオブジェクトとスライシングを組み合わせればイテラブルオブジェクトから部分的に取り出してfor文で処理することが可能。
インデックス2(3番目の値)から取り出す例。

for i in 'あいうえお'[2:]:
    print(i)

実行結果

う
え
お


 インデックス3(4番目の値)からインデックス1(2番目の値)まで逆に(-1)取り出す例。

for i in 'あいうえお'[3:1:-1]:
    print(i)

実行結果

え
う


4. breakによるforループの抜け出し

 breakを使うと範囲内でもforループを抜け出すことができる。breakif文と組み合わせ条件式がTrueの場合にbreakが実行され処理2は実行されずforループを抜ける。

for 変数 in 範囲:
    処理1
    if 条件式:
        break
    処理2


 次の例はi = 0,1,2,3,4の間繰り返すforループだがif文でiが3の時にbreakされるためその後の処理print(i)を実行せずforループを抜ける。

for i in range(5):
    if i == 3:
        break
    print(i)

実行結果

0
1
2


5. continueによるforループのスキップ

 continueを使うと特定条件において後ろの処理をスキップし次のループに移る。continueif文と組み合わせ条件式がTrueの場合にcontinueが実行され処理2は実行されず次のループに移る。

for 変数 in 範囲:
    処理1
    if 条件式:
        continue
    処理2


 次の例はi = 0,1,2,3,4の間繰り返すforループだがif文でiが3の時にcontinueされるためその後の処理print(i)をせず次のループに移る。

for i in range(5):
    if i == 3:
        continue
    print(i)

実行結果

0
1
2
4


6. リファレンス

Python 言語リファレンス > 8. 複合文 (compound statement) > 8.3. for 文

使用バージョン:Python 3.7.0

0 件のコメント:

コメントを投稿