【Python入門】制御フローツール for 文の使い方

Python
スポンサーリンク

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 のスライスという概念です。

【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 文に与えられたシーケンス内の要素の数だけループする。

  • ループする「回数」が決まっている
  • シンプルにまとめれるので単純な処理をする場合に好まれる

参考

4. その他の制御フローツール
前章で紹介した while 文の他にも、 Python にはいくつか制御フローツールがあり、本章で説明します。 if 文: おそらく最もおなじみの文型は if 文でしょう。例えば: ゼロ個以上の elif 部を使うことができ、 else 部を付けることもできます。キーワード ' elif' は 'else if' を短...

Python まとめページ

独学でPythonを覚えよう
今話題のプログラム言語「Python」を独学で勉強していく内容を、アウトプットします。僕が今回選んだ教材は、python.jp の Pythonチュートリアル です。このチュートリアルに沿って進んでいく予定です。言語は Pyth...

前回へ戻る

【Python入門】制御フローツール while 文の使い方
while 文は繰り返し処理の一つです。if 文と違ってブロック内の処理を何回も実行していきます。

次回へ進む

 

[q3-adsense01]

Python
スポンサーリンク
なもをフォローする
スポンサーリンク
Q3

コメント

  1. […] 【Python入門】制御フローツール for 文の使い方 […]