Pythonのfor文の使い方解説(一行・range関数・リスト)

Pythonのループ処理に使われる構文にはfor文とwhile文があります。今回はそのfor文の使い方解説をしていきます。

for文とは

for文はループ処理を行う構文です。Pythonで書く場合はコロン(:)インデントに注意すれば簡単に描くことができます。

構文は上のようになります。for文とよくセットで使われるのはリストやrange関数です。これらから一つ一つとってきた値を{変数}に代入して{ループするコード}を繰り返します。

for文で{ループするコード}はインデント(字下げ)して書きます。2行以上続く場合も続けてインデントしておきましょう。

  • if文やfor文のように複数行で構成されてる分を「複合文」と言う
  • 複合文の1行目(コロンまで)をヘッダー部分と言う
  • ヘッダーに続くインデントされた部分をスイート部分と言う
  • ヘッダーとスイートを合わせた2行以上のコードを節と言う
  • 節は2つ以上含まれる場合がある

以下にfor文の基本的な使用例をまとめています。

リストの値を一つずつ取り出す方法

この例ではfor文の下に書かれているprint関数がループするコードになります。リスト[1, 2, 3]の値を一つ一つ変数iに代入してそれをprint関数で表示しています。

1回目のループでは「i=1」と代入されています。2回目のループは「i=2」、3回目はのときも同様に「i=3」が代入されています。

以下のようにループしている回数を記録することもできます。

formatメソッドを使っていますが、基本的なfor文の書き方は変わっていません。このようにループの回数を記録することもできます。

もちろん、リストの中身のデータが整数でも文字列でも関係なく取り出すことができます。

関連記事

ループ処理に使われるfor文で、リストやタプルからインデックスと要素を取り出したいときに使う構文を紹介します。 この記事ではリストを例にコードを紹介していますが、タプルに置き換えても同じことができます。 for文の基本的な使い[…]

Pythonのfor文とenumerate関数

for文と文字列

for文に文字列を渡すと一文字ずつ取り出してくれます。

for文とrange関数

リストのほかにrange関数を使うことが一般的です。決まった回数の繰り返し処理などに使われます。

以下は「’Hello World’」を4回表示させるプログラムです。range関数に4を渡すと0~3の3つの数字を返します。最初は「i=0」から始まってループの最後は「i=3」になっています。

上の例ではfor文に使われている変数iをその下のプログラムに書いていません。このように変数とループするコードを関連させずに書くこともできますし、下のように変数をプログラムに使うこともできます。

このプログラムでは変数iの値に10を足した値をprint関数で出力しています。

関連記事

ループ処理に使われるfor文とよくセットで使われるrangeの使い方を紹介していきます。 for文の書き方とrangeの挙動を知っていれば、 その組み合わせでいろいろなループ処理を作ることができます。 もし、for文とr[…]

Pythonのfor文でrange関数とlen関数を使う方法
関連記事

for文でおなじみのrange関数の使い方を説明していきます。 この関数の使い方を詳しく知っていれば柔軟にfor文のプログラムを作ることができます。 この記事で紹介しているコードはPythonのIDLE表記になっています。 […]

Python組み込み関数range

一行でfor文を書く方法

リストの中に一行でfor文を書くことで連続するデータを格納したリストを作ることができます。

基本的な書き方は先にfor文を書いて→コロン(:)→インデントしてからコードを書くという順番でしたが、リストの中にいれる場合はfor文の前に書いたコードが繰り返し処理されます

Xはrange関数を使って0~9までの整数を格納するリストを作っています。Yは「’Hello’」を4個格納したリストを作っています。

Xの方は変数iの値をリストに格納していますが、Yの方は変数iはただの繰り返す回数を表す役割になっています。

リスト内に書く順番が難しいかもしれませんが「何を」「何回」繰り返すのかを考えながらコードを書いてみてください。

関連記事

Pythonのループ処理に使われるfor文は基本的に複数行でコロン(:)とインデントを使って書かれますが、ときには1行で書くこともできちゃいます。 今回はその一行で書く方法と、複数行で書いた時との違いを紹介していきましょう。この記事[…]

Pythonのfor文を一行で書く方法と複数行との違い

入れ子にする方法

これまではfor文を一回だけ使う例を見ていきましたが、プログラミングが進むにつれてfor文の中にさらにfor文が入った複雑なコードを書くことがあります。

1行目のfor文で変数iに値を代入します。range(3)となっているので変数iに代入される数は0~2です。一回目のループでは「i=0」となり、2行目のprint関数で0が出力されます。

3行目のfor文で変数jに値を代入します。range(2)となっているので変数jに代入される数は0,1です。一回目のループでは「j=0」となり、4行目のprint関数で「’Hello World」が出力されます。

つぎに、「j=1」となり再度4行目のprint関数で「’Hello World」が出力されます。こうして3行目のfor文の処理が終わればまた1行目のfor文に戻って「i=1」に更新され同じ処理を繰り返します。

このように、for文の入れ子では中に入っているfor文の処理が終われば、また外のfor文に戻って処理されます。

また、1,3行目にfor文が書かれていますが、その下の行(2,4行目)はそれぞれインデントされています。入れ子にするとインデントにも注意する必要があります

このように複雑なコードの練習方法は上の例で示したプログラムの出力結果になるように、何も見ずに自分でコードを書いて見ることです。

まとめ

for文にはリストや文字列、range関数などを指定できます。それぞれの挙動は自分でコードを書いて確かめてみましょう。

for文を考えるときは「何を・何回」処理するのかを意識するとコードを書きやすいですね。

Pythonのfor・while・if文に関する記事たち
5

関連記事

プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]

【独学】Pythonを学習できる無料&有料教材7選