web-dev-qa-db-ja.com

Python範囲関数

0から100までループしたいが、1/2のステップでループしたいとします。やってみたら

for i in range(0, 100, 0.5):
    whatever

エラー:

ステップは0であってはなりません

質問: Python 2.xにこのようなことをするための組み込みの方法はありますか?

16
Graphth

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)
23
NPE

numpyがある場合は、次の2つの方法があります。

numpy.arange(0, 100, 0.5)

numpy.linspace(0, 100, 200, endpoint=False)
9
Steve Tjoa

range()とxrange()には整数ステップを使用する必要があります。そのため、0.5ステップは内部で0に変換され、そのエラーが発生します。 for i in [j / 2.0 for j in xrange(100 * 2)]:を試してください

4
ktdrv

ループを手動で作成するか、独自のカスタム範囲関数を定義する必要があります。ビルトインには整数のステップ値が必要です。

3
g.d.d.c

範囲が広い場合は、リストを明示的に作成するよりも、ジェネレータ式を使用することをお勧めします。

 for k in ( i*0.5 for i in range(200) ):
     print k

これは余分なメモリをあまり消費せず、高速で読みやすいです。 http://docs.python.org/tutorial/classes.html#generator-expressions を参照してください

0
rocksportrocker
for x in map(lambda i: i * 0.5, range(0,200)):
  #Do something with x
0
Peter Smith