2019Tweetfor文は一定回数だけ指定の処理を繰り返すループ処理を書くために使います。Pythonではfor文とrange関数を組み合わせることで、見た目的にも簡潔な「Pythonらしい」コードを書くことができます。ここでその方法と仕組みを詳しく解説します。for文の基本に関しては、「Pythonのfor文による繰り返し処理(forループ)の基本」で解説しているので、しっかりとマスターしておきましょう。for文のループ処理の回数についてPythonではfor文(forループ)は次のように書きます。変数名の部分は一時的な変数であり任意の名称を書きます。イテラブルとは要素を順番に取り出すことができるオブジェクトのことです。文字列やリスト、タプル、セット、辞書などは全てイテラブルです。for文では、ほとんど誰もがリストを例にして解説するので、ここでもその慣習にしたがって解説します。for文は一定回数同じ処理を繰り返したい時に使うのですが、繰り返しの回数は、イテラブルの長さ(要素数)と同じになります。5回ループ処理するなら次のように長さ(要素数)が5のリストを使います。print(10)1010101010あくまでもリストの長さ(要素の数)だけ繰り返し処理を行うのでリストに含まれている値は関係がありません。次のコードでは数値のリストではなく名前のリストを使っていますが、値の種類に関係なく要素の数(=5回)だけループ処理をしています。リストの長さ(要素)の数だけ処理を繰り返すのであって値は関係ない。print(10)1010101010このように、for文のループの回数はリストの長さ(要素数)と同じになるということをしっかりと抑えておきましょう。ループ処理を書くたびに、任意の繰り返し回数に相当する長さのリストを作るのも可能なのですが、例えば何百回も何千回もループ処理を繰り返したい場合、いちいちそれだけの長さのリストを作るのは、とても面倒で非効率です。そこでPythonではrange関数を使って、簡単に任意の回数の処理を繰り返すループを作ることができるようになっています。range()」を使って任意の回数の繰り返し処理を行うには以下のように書きます。#半角4文字のインデントrange関数の引数に繰り返しの数を書きます。その下に半角4文字の空白を開け処理文を書きます。この処理文が指定回数のn回繰り返されます。range()の後ろのコロン「:」を忘れがちなので注意しましょう。上でも触れていますが、for文の中の変数はイテラブルから要素を取り出す時に使う一時的なもので変数名は任意です。1print(f'ループ回数:{count}')01234ループ回数:5ループを繰り返す度に、一時的な変数’i’に、0、1、2、3、4と数値が1つずつ入っていきます。print(i)で繰り返しのたびにそれが出力されていますね。代入されていくという処理になっています。range関数は、引数を一つだけ与えた場合、数値は0が先頭になり最後がn-1の数値のイテラブルを生成します。理解するために、もう一歩踏み込んでみましょう。range関数では、以下のように第三引数まで指定することができて、様々な数値のリストを作ることができます。ステップ)以下のコードを見ると使い勝手が分かると思います。range()」と書いた時のPythonの挙動がよくわかります。数値を逆順で作成しています。ループ処理のprint(i)の出力結果を見ると、3から-3まで順番に表示されていますね。-3までには数値が全部で7つあるので(0を含む)、合計7回ループしています。これは、次のコードと同じ意味のものになっています(注:処理速度はrange関数を使った方が早いです)。print(i)3210-1-2-3リストの長さ(要素数)が7なのでループ処理を7回繰り返すのですね。これらを見比べてみると繰り返し処理の回数が長くなればなるほど、range関数を使った方が手軽であることがわかります。range関数で0から10までの間で0を含む3の倍数を作っています。1print(f'ループ回数:{count}')0369ループ回数:4これは、次のコードと同じ意味です。print(i)0369リストの長さ(要素数)が4なのでループ処理の回数も4回ですね。【注】Python2とPython3のrange関数の違いrange関数でfor文(forループ)の繰り返し処理の回数を指定する方法を見てきましたが、Python2に慣れている方は少し混乱したかもしれません。Python2とPython3でrange関数の違いに大きな違いがあるからです。ここで解説しておきます。Python3から始めた方でも、Python2で書かれたコードを見る機会は多いのでサッと確認しておきましょう。【Python2】range関数とxrange関数Python2ではrange関数はリスト型オブジェクトを返し、xrange関数はxrange型のオブジェクトを返します。'xrange'>注:printはPython2ではステートメントでPython3では関数です。Python2のrange関数は値をすぐに作るためprint文で出力するとリストが表示されます。xrange関数は値を保持せず必要な時に生成するため、そのままprint文で出力すると中身の数値は表示されずxrange型のオブジェクトが表示されます。そのためPython2ではfor文(forループ)の繰り返し処理の回数を指定する時はxrange関数を使っていました。【Python3】range関数しかっしPython3ではxrange関数は廃止されてrange関数のみになりました。Python3のrange関数はPython2のxrange関数に対応しておりrange型のオブジェクトを返します。そのためPython3でforループを書く時はrange関数を使います。Python2のxrange関数に相当する。そのためPython3のループ処理ではrange関数を使います。'range'>012余談ですが、Python3ではrange関数からリストを作る場合は、次のようにlist関数と組み合わせます。range()」の書き方の解説はPython3のものなのでサンプルコードはPython2では動きません。xrange()に起因するエラーの場合はrange()に変更すれば動くと思います。print文とprint関数の違いもありますので、Python2の方は適宜ご対応ください。まとめrange関数を使ってfor文の繰り返し処理を書く方法について解説してきました。知識としておさらいしておきたいのは次の3点です。イテラブル」文では、イテラブルの長さ(要素数)の分だけ処理を繰り返す。イテラブルの代わりにrange(n)で繰り返し回数を手軽に指定することができる。Python3のrange関数は、Python2のxrange関数に相当する。参考にして頂ければと思います。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。