为什么我们不能获得特定负数的范围

Sur*_*a G 0 python range

for i in range(3):
    print (i)
Run Code Online (Sandbox Code Playgroud)

我们将得到从 0 到 2 的计数。

但我想知道特定负数的范围。例如-3。我从我的朋友那里了解到,由于索引负数不能存储该值。我无法理解这个概念,因为我的编程语言很差。

Mar*_*ers 5

范围不是索引,可以很好地产生负数:

>>> list(range(-3, 0))
[-3, -2, -1]
Run Code Online (Sandbox Code Playgroud)

请注意,我必须同时指定开始值和结束值,否则它将从 0 开始并且默认方向是向上计数。

如果您需要倒数到 -3,请告诉它倒数:

>>> list(range(0, -3, -1))
[0, -1, -2]
Run Code Online (Sandbox Code Playgroud)

即便如此,使用负数进行索引也能正常工作;它们从末尾开始计数并在内部转换为绝对索引,仍然允许存储:

>>> a = ['foo', 'bar', 'baz']
>>> a[-2] = 'spam'
>>> a
['foo', 'spam', 'baz']
Run Code Online (Sandbox Code Playgroud)