Pythonのループ処理に使われる構文にはfor文とwhile文があります。今回はそのfor文の使い方解説をしていきます。
for文とは
for文はループ処理を行う構文です。Pythonで書く場合はコロン(:)とインデントに注意すれば簡単に描くことができます。
1 2 |
for {変数} in {リストやrangeなど}: {ループするコード} |
構文は上のようになります。for文とよくセットで使われるのはリストやrange関数です。これらから一つ一つとってきた値を{変数}に代入して{ループするコード}を繰り返します。
for文で{ループするコード}はインデント(字下げ)して書きます。2行以上続く場合も続けてインデントしておきましょう。
- if文やfor文のように複数行で構成されてる分を「複合文」と言う
- 複合文の1行目(コロンまで)をヘッダー部分と言う
- ヘッダーに続くインデントされた部分をスイート部分と言う
- ヘッダーとスイートを合わせた2行以上のコードを節と言う
- 節は2つ以上含まれる場合がある
以下にfor文の基本的な使用例をまとめています。
リストの値を一つずつ取り出す方法
1 2 3 4 5 6 7 |
for i in [1, 2, 3]: print(i) #出力結果 1 #i=1 2 #i=2 3 #i=3 |
この例ではfor文の下に書かれているprint関数がループするコードになります。リスト[1, 2, 3]の値を一つ一つ変数iに代入してそれをprint関数で表示しています。
1回目のループでは「i=1」と代入されています。2回目のループは「i=2」、3回目はのときも同様に「i=3」が代入されています。
以下のようにループしている回数を記録することもできます。
1 2 3 4 5 6 7 |
for i in [1, 2, 3]: print('{}回目のループ'.format(i)) #出力結果 1回目のループ #i=1 2回目のループ #i=2 3回目のループ #i=3 |
formatメソッドを使っていますが、基本的なfor文の書き方は変わっていません。このようにループの回数を記録することもできます。
もちろん、リストの中身のデータが整数でも文字列でも関係なく取り出すことができます。
1 2 3 4 5 6 7 |
for i in [1, 2, 'Hello']: print(i) #出力結果 1 #i=1 2 #i=2 Hello #i='Hello' |
ループ処理に使われるfor文で、リストやタプルからインデックスと要素を取り出したいときに使う構文を紹介します。 この記事ではリストを例にコードを紹介していますが、タプルに置き換えても同じことができます。 for文の基本的な使い[…]
for文と文字列
for文に文字列を渡すと一文字ずつ取り出してくれます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
X = 'Hello World' for i in X: print(i) #出力結果 H e l l o W o r l d |
for文とrange関数
リストのほかにrange関数を使うことが一般的です。決まった回数の繰り返し処理などに使われます。
以下は「’Hello World’」を4回表示させるプログラムです。range関数に4を渡すと0~3の3つの数字を返します。最初は「i=0」から始まってループの最後は「i=3」になっています。
1 2 3 4 5 6 7 8 |
for i in range(4): print('Hello World') #出力結果 Hello World #i=0 Hello World #i=1 Hello World #i=2 Hello World #i=3 |
上の例ではfor文に使われている変数iをその下のプログラムに書いていません。このように変数とループするコードを関連させずに書くこともできますし、下のように変数をプログラムに使うこともできます。
1 2 3 4 5 6 7 8 |
for i in range(4): print(i + 10) #出力結果 10 #i=0 11 #i=1 12 #i=2 13 #i=3 |
このプログラムでは変数iの値に10を足した値をprint関数で出力しています。
ループ処理に使われるfor文とよくセットで使われるrangeの使い方を紹介していきます。 for文の書き方とrangeの挙動を知っていれば、 その組み合わせでいろいろなループ処理を作ることができます。 もし、for文とr[…]
for文でおなじみのrange関数の使い方を説明していきます。 この関数の使い方を詳しく知っていれば柔軟にfor文のプログラムを作ることができます。 この記事で紹介しているコードはPythonのIDLE表記になっています。 […]
一行でfor文を書く方法
リストの中に一行でfor文を書くことで連続するデータを格納したリストを作ることができます。
1 |
[{ループするコード} for i in {リストやrangeなど}] |
基本的な書き方は先にfor文を書いて→コロン(:)→インデントしてからコードを書くという順番でしたが、リストの中にいれる場合はfor文の前に書いたコードが繰り返し処理されます。
1 2 3 4 5 6 7 8 |
X = [i for i in range(10)] Y = ['Hello' for i in range(4)] print(X) print(Y) #出力結果 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ['Hello', 'Hello', 'Hello', 'Hello'] |
Xはrange関数を使って0~9までの整数を格納するリストを作っています。Yは「’Hello’」を4個格納したリストを作っています。
Xの方は変数iの値をリストに格納していますが、Yの方は変数iはただの繰り返す回数を表す役割になっています。
リスト内に書く順番が難しいかもしれませんが「何を」「何回」繰り返すのかを考えながらコードを書いてみてください。
Pythonのループ処理に使われるfor文は基本的に複数行でコロン(:)とインデントを使って書かれますが、ときには1行で書くこともできちゃいます。 今回はその一行で書く方法と、複数行で書いた時との違いを紹介していきましょう。この記事[…]
入れ子にする方法
これまではfor文を一回だけ使う例を見ていきましたが、プログラミングが進むにつれてfor文の中にさらにfor文が入った複雑なコードを書くことがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
for i in range(3): print(i) for j in range(2): print('Hello World') #出力結果 0 #i=0 Hello World #j=0 Hello World #j=1 1 #i=1 Hello World #j=0 Hello World #j=1 2 #i=2 Hello World #j=0 Hello World #j=1 |
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文を考えるときは「何を・何回」処理するのかを意識するとコードを書きやすいですね。
- ループ処理とは?for文とwhile文の解説
- while文を使う方法【インクリメントと無限ループ対処法】
- for文の使い方解説(一行・range関数・リスト)
- for文を一行で書く方法と複数行との違い
- for文でrange関数とlen関数を使う方法
- for文でリストのインデックスと要素を取り出す(enumerate)
- for文で辞書のキー・バリューを取り出す方法(enumerate・items・keys・values)
- 条件分岐とは?if文・else・elifの書き方
- for文やif文でpass・break・continueを使う方法
- while文のbreak・else・continue使い方まとめ
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]