ページへ戻る

− Links

 印刷 

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

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

« Prev[4]  Next »[5]
1: 2016-07-12 (火) 15:56:16 njf[6] ソース[7] バックアップ No.1 を復元して編集[8] 2: 2016-07-12 (火) 16:26:59 njf[6] ソース[9] バックアップ No.2 を復元して編集[10]
Line 1: Line 1:
- for i in range(3):+[[Python]]で回数を指定してループするのは通常for文とrangeを組み合わせる。 
 + 
 + for i in range(3):
   print i    print i
Line 7: Line 9:
 1  1
 2  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[4]  Next »[5]