トップページ -> Python入門 基礎編 -> 繰り返し処理を扱おう for文

繰り返し処理を扱おう!~for文~

for文の書き方

今回は繰り返し処理 for文 について解説していきます. 繰り返し処理が扱えるようになると,人間では一生かかってもできないような処理を一瞬で終わらせることができます. for文は以下のように書きます.


for (ループ変数) in (イテラブルオブジェクト): # if文と同じようにダブルコロンを付けます.
    (繰り返したい処理) # if文と同じようにインデントブロックを作ります.
    (繰り返したい処理2行目)
            |
    (繰り返したい処理n行目) # 繰り返したい処理は複数行でもよい
ループ変数」や「イテラブルオブジェクト」という聞いたことのない単語が出てきましたね. これはそんなに難しいものではありません.
  1. イテラブルオブジェクト

    簡単に説明すると,頭から順番に要素を取り出すことができるオブジェクトのことです. リストなどが正にイテラブルオブジェクトです. 文字列も1文字目から順に取り出すことができるのでイテラブルオブジェクトです.
  2. ループ変数

    ループ変数とはイテラブルオブジェクトから取り出したデータを格納するための変数です. for文では
    1. イテラブルオブジェクトの最初の要素をループ変数に格納
    2. インデントブロック内の繰り返し処理を行う
    3. イテラブルオブジェクトの次の要素を取り出し 2 に戻る 次の要素が取り出せなければ終了
    という処理を行います.
難しい単語が出てきましたが,for文の雰囲気はつかめましたでしょうか? さっそく,実際のコードを見て具体的な for文 の書き方を学びます.

for i in "Hello World":
    print(i)
以下のようになりますね.
文字列と繰り返し
1. Hello World の最初の要素Hを取り出しiに代入
2. iを出力する
3. 次の要素を取り出し,2に戻る
を繰り返しています.
リストについても見てみましょう.

my_list = [1,3,5,7,9]
for i in my_list:
    print(i)
リストと繰り返し
やはり頭から順に要素を取り出しiに代入していますね.

回数を指定した繰り返し

for文を使ってイテラブルオブジェクトの要素を取り出す方法は分かりました. では,100回 「Hello World」と出力してほしい場合はどうすればいいでしょうか? ループ変数自体は別にループの中で使う必要がないので要素を100個持つイテラブルオブジェクト 例えば "aaa … aaa"(100文字) などがあれば以下のようにできそうです.


# 実は a*100 で aaa…aaa(100文字)が簡単に作れます
word = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
counter = 0
for i in word:
    counter = counter + 1
    print(counter,"Hello World")
        
文字列を使った繰り返し
ちゃんと100回出力されていますね. 思ったより面倒ではありませんでしたが,毎回こんな書き方をするのはさすがにあんまりです.
そこでrange関数というものが用意されています.l,m,nはそれぞれ整数です.floatを与えるとエラーを起こします.
1. range(n) 0からnまでのn個の連続するイテラブルオブジェクトを返します.
2. range(m,n) mからn-1までの (n-m)個の連続するイテラブルオブジェクトを返します.
3. range(m,n,l) mからnまでl飛ばしで連続するイテラブルオブジェクトを返します.
具体例を見てrange関数の働きを確認してみましょう. イテラブルオブジェクトなのでfor文が使えます.

for i in range(10):
    print(i)
以下のようになります.
回数指定1

for i in range(10,20):
    print(i)
以下のようになります.
回数指定2

for i in range(0,20,2):
    print(i)
以下のようになります.
回数指定3

for i in range(20,0,-2):
    print(i)
以下のようになります.
回数指定4
ここまで来れば回数を指定した繰り返し処理もできそうですね. 演習問題を解いてみましょう.

演習問題

  1. 0,1,2,3,4,5,6,7,8,9,10 を要素とするリストを作ってください.
  2. 繰り返し処理を用いてリストの要素を頭から順に出力してください.
  3. 繰り返し処理を用いてリストの要素を0から1つ飛ばしで出力してください.
  4. 繰り返し処理を用いてリストの後ろから順に出力してください.

演習問題の解答例


# 問1
my_list = [0,1,2,3,4,5,6,7,8,9,10]

# 問2
for i in range(11):
    print(my_list[i])
    
# 問3
for i in range(0,11,2):
    print(my_list[i])
    
# 問4
for i in range(10,-1,-1): # 範囲に注意
    print(my_list[i])
このように繰り返し処理を使って要素を取り出すことは頻繁にあります. ループ変数にi,j,kなどが使われる理由も index の i から来ているのかもしれません. 数学でもi,j,k をよく使いますし自然な感じはしますよね.

今回はfor文による繰り返し処理について学びました. 次回は繰り返しをより細かく制御する break文 continue文について解説します.

<- 前へ戻る 【目次に戻る】 次へ進む ->