>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(10,0,-1) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
このレンジ関数を小数に拡張したいときの書き方。
たとえば、0から1.0まで0.1刻みの値を返したいときは、以下のようにします。
0.普通に計算する
>>> for n in range(10): ... print n*0.1 ... 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9普通ならばループの中で計算してしまえば良いですね。
1.リスト内包表記を使う
>>> [0.1*x for x in range(10)] [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]というリスト内包表記を用いると、
>>> for n in [0.1*x for x in range(10)]: ... print n ... 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9同様の機能をシンプルに実装できます。
2.range関数を実数に拡張したジェネレータ関数を作る
def drange(begin, end, step): n = begin while n+step < end: yield n n += stepこのようにdrange関数を定義すると、
>>> for n in drange(0.0,1.0,0.1): ... print n ... 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9このような結果を得ることが出来ます。
一番応用が利くのはリスト内包表記ですが、drange関数にはコード上で範囲やステップが分かりやすいという利点があります。
参考にさせていただきました
返信削除