Pythonでプログラムを開発したいものの、
・for文の使い方が分からない…。
・繰り返し処理の書き方が知りたい…。
という方も多いのではないでしょうか。そこでこの記事では、
・for文を使ったサンプルコード
・range関数を使った繰り返し処理
についてご紹介します。
Python初心者の方でも、この記事を読めば、for文の書き方について理解できます。
INDEX
【Python】for文の書き方
Pythonのfor文を使うと、1から100までの数字を順番に出力したり、配列の要素を順番に取り出したりといった繰り返しを含むコードが書けます。
Pythonでfor文を使う際の基本的な書き方は次の通りです。
【Python for文の書き方】
1 2 |
for 変数 in オブジェクト: 実行する処理 |
「for」に続けて、処理の実行に使用する変数と「in」、繰り返しの条件を指定するためのオブジェクトを書きます。オブジェクトとは、文字列や関数、リスト、配列などPythonで扱われる様々なデータのことです。
Pythonのfor文では、オブジェクトの後ろに「:」が必要な点に注意しましょう。さらに、改行とインデントをした上で、繰り返し実行したい処理を記述します。
上記の基本的な書き方に沿って、以下ではfor文のサンプルコードを交えながら、具体的な使い方を解説します。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >【Python】for文を使ったサンプルコード
Pythonのfor文の基本的な使い方として、オブジェクトに配列を指定する方法があります。
例えば、以下のようなwordsという配列があるとします。
1 |
words = ['Japanese', 'English', 'French'] |
この配列に含まれる3つの要素に対して、繰り返し処理を実行したい場合のサンプルコードは次の通りです。
【サンプルコード】
1 2 |
for w in words: print (w) |
このコードを実行すると、次のような流れで処理が行われます。
①変数wに、配列wordsの最初の要素(Japanese)が代入されてprintで出力
②変数wに、配列wordsの二番目の要素(English)が代入されてprintで出力
③変数wに、配列wordsの三番目の要素(French)が代入されてprintで出力
【実行結果】
1 2 3 4 |
Japanese English French |
オブジェクトに「words」という配列を指定することで、配列に含まれる「Japanese」「English」「French」という要素が変数「w」に代入され、「print()」という処理で出力されます。
【Python】range関数を使った繰り返し処理
配列の要素に対して処理を行うのではなく、単に同じ処理を何度か繰り返し実行したい場合には、「range関数」を使います。
例えば、処理を10回繰り返したい場合のfor文の書き方は次の通りです。
1 2 |
for num in range(10): print(num) |
【実行結果】
1 2 3 4 5 6 7 8 9 10 11 |
0 1 2 3 4 5 6 7 8 9 |
range関数に1つだけ整数を指定すると、繰り返しの回数がその数字に達するまで処理が繰り返されます。上記のサンプルコードの場合、「range(10)」と指定しているため、処理が繰り返される回数は10回です。
最初に格納される数は、デフォルトでは「0」に設定されているため、結果的に0から9までの整数が出力されました。
range関数についてより詳しく学びたい方は、「【Python】range関数の記述方法!for文・list・小数との使い方を解説」も併せてご覧ください。
ここからは、range関数の応用として、「範囲を指定」する場合と、「増加量を指定」する場合の書き方を解説します。
範囲を指定する
次に、範囲を指定して繰り返し処理を行うfor文のサンプルコードをみていきましょう。
前述の「for num in range(10):」は、10に達したら処理を終了するという意味でした。
range関数に2つの数字を書くと、範囲を指定して繰り返し処理を実行できます。例えば、開始点を「3」として、「10」に達したら処理を終了するサンプルコードは次の通りです。
1 2 |
for num in range(3,10): print(num) |
【実行結果】
1 2 3 4 5 6 7 8 |
3 4 5 6 7 8 9 |
3から始まって、10に達した時に処理が止まるため、結果として3から9までの整数が出力されました。
前述の「for num in range(10):」のようにrange関数に1つだけ数字を指定した場合には、開始点の「0」が省略されていると解釈されます。
増加量を指定する
range関数に3つの数字を書くことで、開始点から終了点までの数字の増加量を指定することも可能です。例えば次のコードは、3から始まって2ずつ増加し、10に達したら終了するという意味を表します。
1 2 |
for num in range(3,10,2): print(num) |
【実行結果】
1 2 3 4 5 |
3 5 7 9 |
結果として3、5、7、9という数字が出力されました。
前述の「for num in range(3,10):」のように2つの数字で開始点と終了点のみを指定した場合、増加量は「1」となります。
以上で学習したrange関数をまとめておきます。
【Python】for文と合わせて使うコードを紹介
Pythonのfor文には、処理内容をより細かく指定するためのコードがあります。ここからは、for文と合わせて使う主なコードをご紹介します。
break:for文を途中で終了させる
for文の繰り返し処理を途中で終了させたい場合は、「break」というコードを使用します。サンプルコードは次の通りです。
1 2 3 4 5 |
for num in range(20): print num if num == 10 break |
【実行結果】
1 2 3 4 5 6 7 8 9 10 11 12 |
0 1 2 3 4 5 6 7 8 9 10 |
breakを使うと、それ以降の処理を行わずに、for文が終了します。
上記のサンプルコードでは「if num == 10」と指定されているため、numが10になった時点でbreakが実行され、for文が終了します。結果として、0から10までの数字が出力されました。
なお、ソースコードにある「if」の使い方について詳しく知りたい方は、「【Python】if文の使い方と条件分岐をサンプルコードで解説!」をご覧ください。Pythonのif文について解説しています。
continue:次の処理にスキップさせる
繰り返し処理の途中で「if」による条件分岐を行ったあと、引き続き処理を進めたい場合には「continue」を使います。
例えば、次のように「continue」を使うと、偶数か奇数かの判定が可能です。
1 2 3 4 5 6 |
for num in range(2, 10): if num % 2 == 0: # 2で割ったときの余りが0になるかで条件分岐 print("偶数", num) # if文が真ならこちらを実行 continue print("奇数", num) # if文が偽ならこちらを実行 |
【実行結果】
1 2 3 4 5 6 7 8 9 |
偶数 2 奇数 3 偶数 4 奇数 5 偶数 6 奇数 7 偶数 8 奇数 9 |
上記のサンプルコードでは、2から9までの数字について、「if num % 2 == 0」という部分により2で割り切れるかが判定されます。
2で割り切れる場合には、次の行にある「print(“偶数”, num)」が実行され、割り切れない場合には「continue」の次の行にある「print(“奇数”, num)」が実行されます。
結果として、2から9までの数字について、偶数または奇数のいずれかが出力されました。
「break」が途中で処理を終了することに対して、「continue」は次の繰り返し処理へと進められることが主な違いです。
else:繰り返し完了後に処理を行う
「else:」で指定したコードは、for文による繰り返し処理がbreakなどによって中断されずに、最後まで完了した時に実行されます。例えば、「else:」を使ってfor文が最後まで完了したかを確認するサンプルコードは次の通りです。
1 2 3 4 5 6 7 8 9 10 |
numbers = [1, 2, 3] for num in numbers: if num == 0: # もし0が見つかったら print("リスト内に0が見つかりました。") break else: # ループが正常に終了した場合に実行される print("リスト内に0は見つかりませんでした。") |
【実行結果】
1 |
リスト内に0は見つかりませんでした。 |
上記のコードでは、配列内に「0」が含まれているかがfor文で確認され、0が見つかった場合は「リスト内に0が見つかりました」というメッセージが出力された上で「break」により処理が中断されます。
今回のコードでは配列の中に0という数字が含まれないため、for文のループを抜けたあとに「else:」内の処理が実行され、「リスト内に0は見つかりませんでした。」と出力されます。
「else:」を使うと、for文の繰り返し処理の中に別のfor文が記述されている「多重ループ」というコードで、一定の条件を満たしたときにループを抜け出すことも可能です。
reversed:逆順で要素を取得する
「reversed」を使うと、for文で配列の要素を逆順で取り出したり、range関数で数字の順序を逆にしたりできます。
配列の要素を逆順で取り出すサンプルコードは次の通りです。
1 2 3 4 |
foods = ["apple", "beef", "chocolate"] for food in reversed(foods): print(food) |
【実行結果】
1 2 3 4 |
chocolate beef apple |
このように、「reversed」を使うと配列の要素が後ろから順番に処理できます。
また、range関数で「reversed」を使うサンプルコードは次の通りです。
1 2 |
for num in reversed(range(1, 10)): print(num) |
【実行結果】
1 2 3 4 5 6 7 8 9 10 |
9 8 7 6 5 4 3 2 1 |
上記のコードでは、開始点の1から終了点の10までの繰り返し処理が逆から順番に行われています。結果として、1から9までの整数が5から順番に出力されました。
Pythonの基礎でもあるfor文を使いこなそう!
Pythonのfor文は、処理を繰り返し実行できるコードです。配列内の要素に対して順番に処理を実行したり、数字によって繰り返しの範囲を指定したりできます。今回紹介した基本的なポイントを理解して、ぜひPythonのfor文を活用しましょう。
Pythonを使ったより応用的なプログラムの実装方法を学びたい方には、以下の講座がおすすめです。
【Python×協調フィルタリング】レコメンドで使われる協調フィルタリングのアルゴリズムを学びPythonで実装!
レコメンドロジックにはどんな種類があるのかを学び最もよく使われる協調フィルタリングについて理解してPythonで実装していこう!映画の評価データやジョークの評価データを使って協調フィルタリングを実装してみよう!
\無料でプレビューをチェック!/
講座を見てみるレビューの一部をご紹介
評価:★★★★★
Pythonの基礎から協調フィルタリングを実際に試すところまでを理解できるコースです。協調フィルタリングを勉強するきっかけや導入にお勧めだと思います。
評価:★★★★★
イラストも交えて説明してくれるので、とてもわかりやすかったです
Pythonのfor文を使いこなして、プログラミングスキルを高めましょう!
最新情報・キャンペーン情報発信中