Pythonのforとrangeオブジェクトとlist(配列)

python コンピュータ
python

一定の回数を繰り返すfor文は様々なプログラミング言語に存在します。

一般的な書式としては

for(i=0; i < 10; i++) { ループ内の処理 }

のような感じになります。
変数iが繰り返す数のカウンタとなり、i=0で初期化しi<10でiが10より小さい間ループを繰り返します。
ループ内の処理が終了した場合、i++でカウントアップを行い条件式が成立している間ループを繰り返します。

Pythonにもfor文がありますが、以下の様にRange()オブジェクトとセットで使います。

for i in range(10):
    print(i)

実行結果は0~9の文字が出力されます。

結果から想像するに、range(10)は0~9の数値配列?のような物で、ループごと順番にiに数値がセットされるイメージになります。

開始の値を1からにしたい場合はrange(10)をrange(1,10)にします。

for i in range(1,10):
    print(i)

実行結果は1~9の文字が出力されます。

for文は一定回数繰り返す場面でも使われますが、カウンタ変数のiを配列のインデックスとして配列の各要素にアクセスする目的でも使われます。

my_list = ["A", "B", "C"]

for i in range(len(my_list)):
    print(my_list[i])

実行結果はA~Cが順番に出力されます。

range()を使うためにmy_listの要素数をlen()関数で取得していて、ちょっと回りくどい感じがします。

配列の要素を参照するだけであれば以下の方法で取得出来ます。

my_list = ["A", "B", "C"]

for item in my_list:
    print(item)

こちらのコードでも、実行結果はA~Cが順番に出力されます。range()を使う方法よりコードがすっきりした感じになります。
この方法は、他のプログラミング言語のforeachという構文と似ています。

また、インデックスと値を一度に取得する方法として以下のような方法があります。

my_list = ["A", "B", "C"]

for index,value in enumerate(my_list):
    print('{0},{1}'.format(index, value))
# プログラム出力
#0,A
#1,B
#2,C

こちらの方法であれば、インデックスが取得できるので値の内容に応じて配列の要素を書き換えることが出来るのでrange()を使った方法を代替することが出来ます。

色々試してみましたがpythonのforは他言語のforeachのようです。他言語のforの様に動作させるためrange()オブジェクトを使っている感じがします。

コメント