我如何在0和1之间迭代0.1步?

这表示step参数不能为零:

for i in range(0, 1, 0.1):
    print(i)

当前回答

我的解决方案:

def seq(start, stop, step=1, digit=0):
    x = float(start)
    v = []
    while x <= stop:
        v.append(round(x,digit))
        x += step
    return v

其他回答

在步骤中添加可能出现错误符号的自动更正:

def frange(start,step,stop):
    step *= 2*((stop>start)^(step<0))-1
    return [start+i*step for i in range(int((stop-start)/step))]

与R的seq函数类似,这个函数在给定正确的步长值的情况下以任意顺序返回一个序列。最后一个值等于停止值。

def seq(start, stop, step=1):
    n = int(round((stop - start)/float(step)))
    if n > 1:
        return([start + step*i for i in range(n+1)])
    elif n == 1:
        return([start])
    else:
        return([])

结果

seq(1, 5, 0.5)

[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]

seq(10, 0, -1)

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

seq(10, 0, -2)

[10, 8, 6, 4, 2, 0]

seq(1, 1)

[1]

在'xrange([start], stop[, step])'基础上,你可以定义一个生成器,它接受并生成你选择的任何类型(坚持支持+和<的类型):

>>> def drange(start, stop, step):
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange(0.0, 1.0, 0.1)
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
f = lambda x,y,z: (x+i*z for i in range(int((y-x)/z)))

上面不需要借助任何库就可以做分数步。

可以使用Numpy库来完成。Arange()函数允许浮动中的步骤。但是,它返回一个numpy数组,为了方便起见,可以使用tolist()将其转换为列表。

for i in np.arange(0, 1, 0.1).tolist():
   print i