ページへ戻る

− Links

 印刷 

Python​/回数を指定してループ のバックアップソース(No.2) :: NJF Wiki

xpwiki:Python/回数を指定してループ のバックアップソース(No.2)

« Prev[5]  Next »[6]
[[Python]]で回数を指定してループするのは通常for文とrangeを組み合わせる。

 for i in range(3):
    print i

実行結果

 0
 1
 2

このとき、iのスコープはループの外まである。

 for i in range(3):
    print i

 print i

結果
 0
 1
 2
 2

rangeは等差数列を生成する関数。つまり

 >>> range(3)
 [0, 1, 2]

となる。pythonのforループはinの要素を順にループするので、このような結果となる。

rangeは最小値、上限、差を引数とすることもできる。

 >>> range(1,4)
 [1, 2, 3]
 >>> range(1,4,2)
 [1, 3]

非常に回数の多いループで、リストを生成するとメモリがもったいない、という場合にはxrangeを使うとリストを生成しないのでメモリが節約できる。

 for i in xrange(3):
    print i

xrangeはxrange型のオブジェクトを返す。
 xrange(3)
 >>> range(1,2)

そのかわり次の要素を取得するときに計算を行うので遅くなる。通常はrangeで十分。非常に大きな回数のループの時だけ考慮すれば良い。

pythonのforループはelse文もとれる

 for i in range(3):
    print i
 else:
    print "loop end"

結果
 0
 1
 2
 loop end

else文はbreakを使ったときにとばされる
 for i in range(3):
    print i
    break
 else:
    print "loop end"

結果
 0

例えば、ループの中の処理で何か検索し見つかればbreakして、最後まで見つからなかったときにelse文で「無かった」とメッセージを出す、といった使い方ができる。

 # -*- coding: utf-8 -*-
 from random import  randint

 for i in range(3):
    print i
    if i == randint(0,3):
        print u"あたり!"
        break
 else:
    print u"はずれ!"

結果1
 0
 1
 あたり!

結果2
 0
 1
 2
 はずれ!

[[目次へ戻る>Python]]

« Prev[5]  Next »[6]