我如何在0和1之间迭代0.1步?
这表示step参数不能为零:
for i in range(0, 1, 0.1):
print(i)
我如何在0和1之间迭代0.1步?
这表示step参数不能为零:
for i in range(0, 1, 0.1):
print(i)
当前回答
在步骤中添加可能出现错误符号的自动更正:
def frange(start,step,stop):
step *= 2*((stop>start)^(step<0))-1
return [start+i*step for i in range(int((stop-start)/step))]
其他回答
增加循环的i的大小,然后在需要时减少它。
for i * 100 in range(0, 100, 10):
print i / 100.0
编辑:老实说,我不记得为什么我认为这会在语法上工作
for i in range(0, 11, 1):
print i / 10.0
这应该有期望的输出。
scipy有一个内置的函数arange,它泛化了Python的range()构造函数,以满足您对浮点数处理的需求。
从scipy进口安排
为了精品的完整性,一个功能性的解决方案:
def frange(a,b,s):
return [] if s > 0 and a > b or s < 0 and a < b or s==0 else [a]+frange(a+s,b,s)
这里的许多解决方案在Python 3.6中仍然存在浮点错误,并没有完全满足我个人的需求。
下面的函数接受整数或浮点数,不需要导入,也不返回浮点错误。
def frange(x, y, step):
if int(x + y + step) == (x + y + step):
r = list(range(int(x), int(y), int(step)))
else:
f = 10 ** (len(str(step)) - str(step).find('.') - 1)
rf = list(range(int(x * f), int(y * f), int(step * f)))
r = [i / f for i in rf]
return r
range()内置函数返回一个整数值序列,所以您不能使用它来执行十进制步骤。
我会说使用while循环:
i = 0.0
while i <= 1.0:
print i
i += 0.1
如果你好奇的话,Python正在将你的0.1转换为0,这就是为什么它告诉你参数不能为0。