Pythonでloop処理(for文)

はじめに

Pythonの超入門記事です。プログラミングで最も簡単な処理の一つである、for文の書き方を解説します。

サンプルコード

for文を利用して、0から4までの数を出力してみましょう。

よくみるパターンは下記の二つかと思います。

方法1

1
2
3
4
5
6
7
>>> for i in range(5):
>>> print(i)
0
1
2
3
4

方法2

1
2
3
4
5
6
7
>>> for i in [0, 1, 2, 3, 4]:
>>> print(i)
0
1
2
3
4

方法1の解説

次のパターンも見てください。

1
2
3
4
5
6
7
>>> for i in range(0, 5):
>>> print(i)
0
1
2
3
4

次のパターンだとどうでしょうか。

1
2
3
4
5
6
>>> for i in range(1, 5):
>>> print(i)
1
2
3
4

range は二つの引数start, stopをとります。

range をfor文で回すことでstart以上、 stop未満の数を順に取り出すことができます。

そして、startは省略した場合は0となるので、方法1のような使い方ができるのです。

方法2の解説

for文はlistに対しても回すことができます。

list[]記号で括ることで作成できるオブジェクトです。

listオブジェクトは、要素として数以外の変数を取ることもできます

つまり、文字列のlistをfor文で回すことも出来ます。

1
2
3
4
>>> for i in ['orange', 'apple']:
>>> print(i)
orange
apple

要素の型が違っている場合でもOKです。

1
2
3
4
5
>>> for i in ['orange', 'apple', 4]:
>>> print(i)
orange
apple
4

方法1(range)と方法2(list)の違い

これらの特徴からfor文を書く際は、

rangeとlistは次のように使い分けると良いでしょう。

  • range
    • 対象の数を増やしていく場合(スタートは0以外でもOK)
  • list
    • それ以外

発展

厳密にはどういう条件であれば、for文が回せるのでしょうか。

それは、オブジェクトがイテラブルかどうかによります。

イテラブルなオブジェクトには、例えば次のようなものがあります

  • range
  • list
  • tuple
  • set
  • dict
  • str

イテラブルかどうかは次のようなコードで確認することが出来ます。

1
hasattr(obj, "__iter__")

文字列のfor文

先ほどの例に挙げたように、文字列もイテラブルです。

文字列に対してfor文を回すことで、文字を一文字ずつ取得できます。

1
2
3
4
5
6
7
8
>>> for s in "Python":
>>> print(s)
P
y
t
h
o
n

これは、よく使うので覚えておくと良いでしょう。