for
文も繰り返しを行います。
for
文と while
文の使い分け方が最初は難しいですが、for
文特有の書き方があるので簡単な繰り返しに使われることが多いです。
[q3-adsense01]
基本構文
for 文
for 変数 in シーケンス:
繰り返す処理
シーケンス内の要素を一つずつ取り出し、変数に代入します。
要素の数だけ繰り返します。
>>> words = ['Python', 'PHP', 'Ruby']
>>> for word in words:
... print(word)
...
Python
PHP
Ruby
>>>
シーケンス型とは、リストや文字列、タプル、辞書などの複数のデータが順番に並んでいる型のことです。
文字でも、数字でも、要素がある限り繰り返します。
else 文
for
文にも else
文を追加できます。
>>> words = ['Python', 'PHP', 'Ruby']
>>> for word in words:
... print(word)
... else:
... print("終了")
...
Python
PHP
Ruby
終了
使い方は while
文と一緒です。
break
文でループを抜けると、else
文は実行されません。
通常終了したときだけ実行したい処理を else
文に記述しておけば切り分けができます。
シーケンス型で使える関数
関数を使うことでより柔軟にシーケンス型を作成することができます。
range 関数
指定回数だけ繰り返したい時があります。
その時に便利なのが range
関数です。
range ([始まりの数値,] 最後の数値 [, 増加する量])
始まりの数値を指定しなかった場合、数値は「 0 」からスタートします。
range
関数の中に 5 を指定した場合、0 〜 4 が変数に代入されます。
5 の数値がきたら、実行する前に終了するために処理は 4 までになってしまうのです。
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>>
始まりの数値を指定することで、スタート値を設定することができます。
>>> for i in range(3,6):
... print(i)
...
3
4
5
>>>
増加する量を指定することで、倍数の表示をすることができます。
>>> for i in range(0, 10, 3):
... print(i)
...
0
3
6
9
>>>
0 から始まって、指定した数値 -1 になるのは、Python
のスライスという概念です。

リンク先では文字列ですが、range
関数も同じ概念を持っています。
enumerate 関数
要素と一緒にインデックスも取得したい場合は、enumerate
関数を使用します。
>>> words = ['Python', 'PHP', 'Ruby']
>>> for i, j in enumerate (words):
... print(i, j)
...
0 Python
1 PHP
2 Ruby
>>>
インデックスが第一変数、要素が第二変数に格納されます。
ループの制御
while
文と同じく、for
文も制御関数が使えます。
break 関数
break
文を使うことで、処理を途中で終わらすことができます。
>>> for i in range(20):
... print(i)
... if i == 5:
... break
...
0
1
2
3
4
5
>>>
break
文でループを抜けると、else
文は実行されません。
通常終了したときだけ実行したい処理を else
文に記述しておけば切り分けができます。
continue 関数
continue
文を使うことで処理を次のループへジャンブすることが出来ます。
>>> for i in range(10):
... if i % 2 == 0:
... print(i, '(偶数)')
... continue
... print(i, '(奇数)')
...
0 (偶数)
1 (奇数)
2 (偶数)
3 (奇数)
4 (偶数)
5 (奇数)
6 (偶数)
7 (奇数)
8 (偶数)
9 (奇数)
>>>
ちょっとこの例では無理矢理感がありますが、continue
関数のあとの処理をスキップすることができます。
[q3-adsense01]
リスト内包表記
for
文処理が一行で書くことが出来ます。
このリスト内包表記が Python
の好きなところです。
シンプルで直感的です。
各要素の値を2倍にする例
通常ではこのように書きます。
>>> data = [1, 2, 3, 4, 5]
>>> newdata =[]
>>> for i in data:
... newdata.append(i * 2)
...
>>> print(newdata)
[2, 4, 6, 8, 10]
>>>
リスト内表記ではこう書くことができます。
>>> data = [1, 2, 3, 4, 5]
>>> newdata = [i * 2 for i in data]
>>> print(newdata)
[2, 4, 6, 8, 10]
>>>
for
文を一行で書けるので簡単にわかりやすくなります。
偶数のみ抽出する例
通常ではこのように書きます。
>>> data = [1, 2, 3, 4, 5, 6]
>>> newdata = []
>>> for i in data:
... if i % 2 == 0:
... newdata.append(i)
...
>>> print(newdata)
[2, 4, 6]
>>>
リスト内包表記ではこう書くことができます。
>>> data = [1, 2, 3, 4, 5, 6]
>>> newdata = [i for i in data if i % 2 == 0]
>>> print(newdata)
[2, 4, 6]
>>>
便利ですね。
while 文と for 文の使い分け方
while
文と for
文はどちらもループする文です。
慣れるまではどちらを使えばいいか悩む時があります。
それぞれの特徴を記載しておきます。
while 文の特徴
while
文に与えられた条件が True
の間だけループする。
- ループする「条件」が決まっている
- 複雑な処理をする場合に好まれる
for 文の特徴
for
文に与えられたシーケンス内の要素の数だけループする。
- ループする「回数」が決まっている
- シンプルにまとめれるので単純な処理をする場合に好まれる
参考

Python まとめページ

前回へ戻る

次回へ進む
[q3-adsense01]
コメント
[…] 【Python入門】制御フローツール for 文の使い方 […]