有没有办法介于0和1之间0.1?
我以为我可以像下面这样做,但它失败了:
for i in range(0, 1, 0.1):
print i
Run Code Online (Sandbox Code Playgroud)
相反,它说步骤参数不能为零,这是我没想到的.
正如指出的这个答案由山姆·罗伯茨和由gnovice这对方的回答,MATLAB的冒号运算符(start:step:stop)创造价值的在用不同的方式矢量linspace一样.Sam Roberts特别指出:
冒号运算符将增量添加到起始点,并从结束点减去减量以达到中间点.这样,它确保输出向量尽可能对称.
但是,有关The MathWorks的官方文档已从其网站中删除.
如果Sam的描述是正确的,步长中的错误不会是对称的吗?
>> step = 1/3;
>> C = 0:step:5;
>> diff(C) - step
ans =
1.0e-15 *
Columns 1 through 10
0 0 0.0555 -0.0555 -0.0555 0.1665 -0.2776 0.6106 -0.2776 0.1665
Columns 11 through 15
0.1665 -0.2776 -0.2776 0.6106 -0.2776
Run Code Online (Sandbox Code Playgroud)
关于冒号运算符的有趣事项:
它的值取决于它的长度:
>> step = 1/3;
>> C = 0:step:5;
>> X = 0:step:3;
>> C(1:10) - X
ans =
1.0e-15 *
0 0 0 0 0 …Run Code Online (Sandbox Code Playgroud)