与python doc中的公式范围混淆

时间:2018-09-25 16:13:52

标签: python python-3.x python-3.7

我正在根据文档(https://docs.python.org/3/library/stdtypes.html#range)的公式研究python range函数,但是它不适用于某些范围,如果对我来说是肯定的步骤,但是对于否定步骤,不是。< / p>

python doc说:

  

对于否定的步骤,范围的内容仍由公式r[i] = start + step*i确定,但约束条件为:i >= 0 and r[i] > stop

所以,我正在尝试使用该公式来计算range (4, -2, -2)

range  (4, -2, -2), r[i] = start + step*i ,i >= 0 and r[i] > stop
i = 4, --> r[4]= 4 + (-2)*(4) = -4,  
           (4 >= 0) (True) and (-4)>(-2) False = False

因此,请注意,第一步不起作用,因为条件为False,因此该范围应为= 4,2,0

我在做什么不好?

1 个答案:

答案 0 :(得分:0)

让我们看看为range (4, -2, -2)

迈出第一步

范围函数的文档:range(start, stop[, step]) -> list of integers

因此,您有start = 4stop=-2step=-2

在公式r[i] = start + step*i中, i始终从0开始计数。

第一个元素r[0] = 4 + (-2) * 0 = 4

约束成立。 i >= 0,因为i为0,而r[i] == 4大于stop-2)。