假设我想从0循环到100但是步长为1/2。如果你试试
for i in range(0, 100, 0.5):
whatever
它调用一个错误,说步骤不能为0.是否有内置方法可以做这样的事情?
我正在使用Python 2.x。
答案 0 :(得分:21)
In [1]: for i in range(0, int(100 / 0.5)):
...: print 0.5 * i
...:
...:
0.0
0.5
1.0
1.5
...
98.0
98.5
99.0
99.5
如果您可以使用numpy
,那么numpy.arange(0, 100, 0.5)
也可以使用。
答案 1 :(得分:9)
如果您有numpy
,则有以下两种方法:
numpy.arange(0, 100, 0.5)
numpy.linspace(0, 100, 200, endpoint=False)
答案 2 :(得分:4)
您必须对range
()和xrange()
使用整数步骤。这就是为什么你的0.5步被内部转换为0并且你得到那个错误。试试for i in [j / 2.0 for j in xrange(100 * 2)]:
答案 3 :(得分:3)
您必须手动创建循环,或定义自己的自定义范围功能。内置需要整数步长值。
答案 4 :(得分:0)
for x in map(lambda i: i * 0.5, range(0,200)):
#Do something with x
答案 5 :(得分:0)
对于大范围,最好使用生成器表达式而不是显式构建列表:
for k in ( i*0.5 for i in range(200) ):
print k
这消耗了额外的内存,快速且易于阅读。 见http://docs.python.org/tutorial/classes.html#generator-expressions