繰り返し「for」
「for」に入る前に
前回は登場しませんでしたが、今回はイテレータというものが登場します。イテレータとは、イテレーションごとにリストや辞書などから要素を1つずつ取りだして返すものです。イテレーション とは、ループのことです。また、Pythonにおいてイテレータに対応しているオブジェクトをイテラブルオブジェクトと呼びます。よく使うものは、リスト・文字列・タプル・辞書・集合です。
繰り返し「for」
前回もお話ししたように、繰り返しは条件が成立限り同じブッロクを実行します。「for」ではその条件がイテレータが存在するかどうかになります。言葉の説明ではよくわからないと思うので例を見ましょう。
繰り返しの書き方
単純な繰り返し[1]
イテレータがリストの例を見ましょう。インデントは空白4つです。
>>> li = [1, 2, 3] >>> for ele in li: ... print(ele) ... 1 2 3 >>> print(ele) 3
- 「for」の命令の右横に好きな変数名(今回は"ele")を書きます。
- 「in」の後にイテラブルナオブジェクト(今回はリスト)を書きます。
- "li"の要素が1つずつ取り出され、"ele"に代入されます。
- イテレーションごとに2.の操作が繰り返されます。
- 「for」のループが終了した後にも"ele"には最後に代入された数字が代入されたままです。
今回は"li"リストの中の要素を1つずつ取り出して、print()により表示しました。
単純な繰り返し[2]
イテレータが辞書の例を見ましょう。インデントは空白4つです。
>>> dc = {"apple": "りんご", "orange": "みかん", "banana": "バナナ"} >>> for key, value in dc.items(): ... print("%s: %s" % (key, value)) ... apple: りんご orange: みかん banana: バナナ
辞書のitems()メソッドは、キーと値を返すので変数を2つ用意して、受け取ります。後の処理は先ほどのリストの時と同じです。for文ではイテレータによって返される値の数によって変数の値を変えなければいけないことに注意しましょう。
繰り返しの繰り返し
for文も繰り返しの中で繰り返しを使うことができます。
>>> for i in range(1, 10): ... for j in range(1, 10): ... print("%3d" % (i * j), end='') ... print() ... 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
前回同様、九九表を作りました。while文と比べてスッキリかけていると思います。range()関数は、指定した値の間の値を順番に生成する関数です。
- range(start, end, step): startからend-1までの数をstepごとに生成します。stepのデフォルトは1です。
BREAK
for文もbreakにより、ループを抜けることができます。
>>> li = [1, 3, 5, 7, 9, 10, 11, 13, 15, 17, 18, 19] >>> for ele in li: ... if ele % 2 == 0: ... print("最初に現れる偶数は%dです。" % ele) ... break ... 最初に現れる偶数は10です。
liリストの中に最初に現れる偶数を表示しました。
CONTINUE
もちろん、continueも使えます。
>>> for i in range(0, 10): ... if i % 2 != 0: ... continue ... print(i) ... 0 2 4 6 8 >>> >>> for i in range(0, 10, 2): ... print(i) ... 0 2 4 6 8
if文とcontinueを使うことにより偶数だけを表示できました。ちなみに、先ほど紹介したrange()関数のstepを2にすることで0から1個飛ばしで数字を得ることができ、偶数だけ表示できます。
最後に
次回からは関数の説明に入りたいと思います。