Python forを理解する

この記事の内容
  • Pythonのforを扱う方法
  • Python for

この記事の対象者
  • Pythonエンジニア
  • Pythonの学習者

この記事の構成
  1. forループについて
  2. forで色々なデータを扱う

はじめに

Pythonに関わらず、プログラミングにおいてfor文は、理解しておきたい処理の一つです。

処理を自動化することが醍醐味のプログラミングにおいて、for文を無意識に理解して扱うことができれば、プログラミングの楽しさもグッと高まるはずなので、ここで理解しておきましょう!

forループについて

forループ(for文とも呼ばれる)は、いわゆる繰り返し処理のことです。

例えば、腕立て伏せが一つのプログラムとすると、100回腕立て伏せしてね。とすることで、腕立て伏せのプログラムが100回繰り返して処理されることになります。

Pythonは、少し特殊で、指定したデータを繰り返し処理してね。という形がオーソドックスです。

どういうことかというと、Pythonでは

for A in B:

とすることでforの繰り返し処理を行うことができます。

Aには、好きな変数名を指定することでその繰り返しの中での値を取り出すことができます。

Bには、繰り返し処理を行うデータを入れたりします。

説明では理解が難しいので、例えばリストのデータがあるとしましょう。

list = [3,6,1,5]

この時、Bにlistを指定することで、
1度目の処理では、Aに3が
2度目の処理では、Aに6が
3度目の処理では、Aに1が
4度目の処理では、Aに5が入り、
その値を使用する事もできます。

list = [3,6,1,5]

for val in list:
    print(val)
# 出力結果
3
6
1
5

for A in B

inは ~の中にという意味なので、

Bの中を先頭から繰り返して処理を行う

と覚えておきましょう。

特定の回数分を処理するfor

また初めの腕立て伏せの話に戻りますが、例えば、100回繰り返し処理したいケースの場合、

range関数というものを使います。

for i in range(10):
    print(i)
# 出力結果
0
1
2
3
4
5
6
7
8
9

Pythonは、ほとんどのケースでデータが0から始まります。
なので、10を入れると、 0 から 10 というデータになり、
イメージすると

[0,1,2,3,4,5,6,7,8,9]

のようなデータを繰り返し処理していることになります。

もし1から10までを処理したい場合、range関数では以下のように行えます。

for i in range(1,11):
    print(i)
# 出力結果
1
2
3
4
5
6
7
8
9
10

また、もし三番目に値を指定した場合、三番目の数ごとに数字を飛ばすことができます。

for i in range(10,101,10):
    print(i)
# 出力結果
10
20
30
40
50
60
70
80
90
100

forで色々なデータを扱う

for文は、様々なデータに対して、繰り返し処理を行うことができます。

リストのfor

リストのforは一番イメージしやすいと思います。
リストの中を先頭から一つずつ繰り返し処理すると考えれば大丈夫です。

list = ['apple', 'orange', 'lemon', 'grame']
for fruit in list:
    print(fruit)
# 出力結果
apple
orange
lemon
grame

文字列のfor

文字列もforの繰り返し処理をかけることができます。
文字列の場合は、文字を一つずつ繰り返し処理していくことができます。

str = 'this is pen'
for s in str:
    print(s)
# 出力結果
t
h
i
s

i
s

p
e
n

結果を見るとわかる通り、スペースも認識して処理を行います。

数字のfor

数字を指定してfor処理を行うことが実はできません。

for i in 5:
    print(i)
# 出力結果
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

数値のオブジェクトは繰り返すことができません。とエラーで言われてしまいます。
なので、数字の場合は、前述したようにrange関数を使いましょう。

辞書型のfor

辞書型のデータは少し特殊です。

{キー: バリュー}

キーとバリューで別れている辞書型。
それをforで繰り返し処理すると、キーのみを抜き出します。

dict = {'id':1, 'name':'Bryan', 'height':175, 'age':28}
for d in dict:
    print(d)        
# 出力結果
id
name
height
age

この場合、以下のような書き方をします。

for key, value in dict.items():

このように記述した時、keyにはキーが、valueにはバリューが入ります。

key,valueとする代わりに、k,vとされる事も多いです。(基本的に命名は自由ですが...)

では、辞書型をfor文で処理してみましょう。

dict = {'id':1, 'name':'Bryan', 'height':175, 'age':28}
for key,value in dict.items():
    print('キー: {}'.format(key))
    print('バリュー: {}'.format(value))
# 出力結果
キー: id
バリュー: 1
キー: name
バリュー: Bryan
キー: height
バリュー: 175
キー: age
バリュー: 28

終わりに

以上、Pythonのforでできる色々なことを解説しました。

for文は、無意識にできるようになればプログラミング力がぐんと上達します。

今回説明したことだけでなく、他にもforで様々なことができます。

例えば、1行で、forを用いて、リストを作り出す事も可能です。

list = [i for i in range(1,11)]
print(list)
# 出力結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

知れば知るほど奥が深いですが、
まずは、リストのforと回数分の処理を回すrange関数だけでも覚えておきましょう!