Contents
今回はPythonでfor文を使ったループ処理をやっていきたいと思います。
習うより慣れろ的な側面が強いので、コードを書いていきつつ、解説していくスタイルでやっていきます。
さっそくfor文でループを書いてみる
rangeメソッドを使って、数字の範囲をループ処理で回す
とりあえず、for文は以下のように書きます。
インデントとコロン(:←これ)に注意して真似してみてください。
for i in range(0,4):
print(i)
0,1,2,3の0から3を含む範囲までの数字が出力されました。
forではなくて、rangeメソッドについて解説すると、rangeは指定した範囲の数字を一覧にして戻してくれるメソッドです。
range(0,4)
上記の場合だったら、0から4までの範囲で、4は含まないので、0,1,2,3です。
range(0,3)
上記の場合だったら、0から3までの範囲で、3は含まないので、0,1,2です。
実際にrangeを書いてprintで出力してみます。
print(range(0,4))
print(range(0,5))
print(range(1,4))
print(range(2,3))
rangeはrangeメソッド自体を使った時には、イテレーターと呼ばれる反復可能オブジェクトとして戻ってきます。(なんのこっちゃって感じだと思うので、なんかそういう感じのものと知っておいてください。)
このrangeを使ってfor文でさらに書いてみると、以下になります。
for number in range(0,10):
print(number)
print("#####")
for number in range(1,10):
print(number)
print("#####")
for number in range(10,10):
print(number)
なんとなく雰囲気で分かると思いますので、最後のrange(10,10)だけ解説します。
range(10,10)は、10から10まで(10を含まない)ので、1回もループが実行されていません。
最初はよくわからんかもしれませんが、何回も読んだり書いたりしていると、そのうち分かるようになります。
リスト(配列)のforループ
次はリストをforループで回す場合です。
manzi_list = ["manzi1", "manzi2", "manzi3"]
for manzi in manzi_list:
print(manzi)
Pythonではforループのinの後ろにリストを直接置くだけで、forループで展開できます。
manzi_listの中身がmanziに1つずつ入って、print(manzi)が実行されるイメージです。
偶数の数字をリストにして、forループで回してみます。
even_number_list = [2,4,6,8,10]
for even_number in even_number_list:
print(even_number)
文字列でも数字でも、リストが同じように展開されます。
if文とforループを組み合わせてみる
偶数の数字のリストを展開して、もしその数字が偶数なら表示するコードです。
even_number_list = [2,4,6,8,10]
for even_number in even_number_list:
if even_number % 2 == 0:
print(even_number)
全て偶数なので、当たり前ですが全部表示されています。
if even_number % 2 == 0
↑これが、even_numberを2で割った余りが0の時、なので、偶数の時っていう条件になります。
さらにいろんな数字を入れて書いてみます。
number_list = list(range(0, 20))
for number in number_list:
if number % 2 == 0:
print(number)
list(range(0,20))
↑について解説です。
list(range(0,20))で、0から19まで(19を含む)の数字のイテレーターを作って、それをリスト化しています。
そしてそのリストをfor文で回して、偶数ならprintメソッドで表示しています。
実際にprintで出力されている数字を見ると、偶数が表示されているのでOKです。
for文についておさらいしてみる
文法に関して画像で説明すると、こんな感じ。
最後にネストしたfor文を見て終わり
最初は少しだけ難しいかもしれませんが、気合いで読んでみてください。
manzi_list = ["manzi1 ", "manzi2 ", "manzi3 "]
for manzi in manzi_list:
for character in manzi:
print(character)
解説すると、1番外側のforループでまず、”manzi1 “, “manzi2 “, “manzi3 “を回すんですけど、回すたびに、その内側でmanziという変数に入った文字列が1文字ずつforループで回されてます。
ちなみに、Pythonでは文字列も反復可能オブジェクトなので、forループで回せます。
そうすると、こういう出力がされます。
m
a
n
z
i
1
m
a
n
z
i
2
m
a
n
z
i
3
最初はネストしたforループが少し複雑に感じるかもしれないのと、いきなり文字列を反復させたので、ちょっぴり難しかったかもしれません!
コピペして、自分で書き換えてみてください。
まとめ
forループの解説は少し長かったかもです。
実際にコピペして書いてみたり、書き換えてみたりしてみるとなんとなく感覚が掴めるかと思います。