はじめに
私がPythonを学び始めたころ、初めに詰まってしまったコードはfor文内の変数の理解でした。
例えば以下のようなコードを読んだとき、
numbers = [1,2,3,]
for n in numbers:
print(n)
for文内で処理される変数であるn
に対して、
「この『for n in ...』の『n』は何を指してるんや」と丸一日悩んでしまったのです。
この記事では、同じようなことで悩んでいる方に向けて、for文内の変数について解説していきます。
なお、この記事に間違っている部分やわかりにくい部分を見つけた方は、ご指摘いただけると嬉しいです。
for文の基本構造
まず、Pythonのfor
文の基本的な構造を見ていきましょう。
for 変数 in イテラブルオブジェクト:
実行処理
for
文の主な要素は以下の二つです。
-
変数:ループ内で各要素を受け取るための一時的な変数名。これが先ほど触れた
n
になる部分。 - イテラブルオブジェクト:繰り返しを行う際、要素をひとつづつ取り出すことができるオブジェクト。通常、複数の要素によって構成されている。
- 実行処理:各ループにおいて実行される処理
n
の役割とは?
では本題のn
とは何かについてみていきましょう。先ほども少し触れましたが、for n in ...
のn
は、イテラブルオブジェクトから順番に取り出される各要素を受け取るための変数です。
各ループの初めにそのループで使用される要素がイテラブルオブジェクトから選択されます。その指定された要素をループ内で使用するために、変数n
に要素の値を代入します。
例えば
以下のようにリストnumbers
を用いたfor文があるとします。
numbers = [1, 2, 3, 4, 5]
for n in numbers:
print(n)
解説:
この時、リストnumbers
の各要素が順番にn
に代入されます。たとえば、最初のループ処理では、リスト内の1番目の要素である1
がn
の値として代入されます。
あまり正確な表現ではないですが、ループの初めにn=number[0]
が隠れていると考えるとわかりやすいかもしれません。したがって、print(n)
では1
が出力されます。
同様に、二回目のループ処理では、リスト内の2番目の要素である2
が代入されます。
出力結果:
1
2
3
4
5
文字列を使った例
message = "Hello"
for char in message:
print(char)
解説:
今回は、char
が変数名として使用されています。
文字列message
の各文字が順番にchar
に代入されます。
初めのループではにmessage
の値であるHello
の一番最初のアルファベット、H
がchar
に代入され、続いてe
、l
と各ループにて対応する文字が変数に代入されていきます。
出力結果:
H
e
l
l
o
まとめ
-
for n in ...
のn
は、イテラブルオブジェクトの各要素を受け取るための一時的な変数名である - 各ループの初めにイテラブルオブジェクト内の各要素を指定する中で、指定された要素の値を
n
に代入する