0から100までループしたいが、1/2のステップでループしたいとします。やってみたら
for i in range(0, 100, 0.5):
whatever
エラー:
ステップは0であってはなりません
質問: Python 2.xにこのようなことをするための組み込みの方法はありますか?
Python2.x:
for idx in range(0, int(100 / 0.5)):
print 0.5 * idx
出力:
0.0
0.5
1.0
1.5
..
99.0
99.5
Numpy:
numpy.arange
もトリックを行います。
numpy.arange(0, 100, 0.5)
numpy
がある場合は、次の2つの方法があります。
numpy.arange(0, 100, 0.5)
numpy.linspace(0, 100, 200, endpoint=False)
range
()とxrange()
には整数ステップを使用する必要があります。そのため、0.5ステップは内部で0に変換され、そのエラーが発生します。 for i in [j / 2.0 for j in xrange(100 * 2)]:
を試してください
ループを手動で作成するか、独自のカスタム範囲関数を定義する必要があります。ビルトインには整数のステップ値が必要です。
範囲が広い場合は、リストを明示的に作成するよりも、ジェネレータ式を使用することをお勧めします。
for k in ( i*0.5 for i in range(200) ):
print k
これは余分なメモリをあまり消費せず、高速で読みやすいです。 http://docs.python.org/tutorial/classes.html#generator-expressions を参照してください
for x in map(lambda i: i * 0.5, range(0,200)):
#Do something with x