为什么我的Python程序中没有列表索引超出范围错误?

Rac*_*hel 1 python

我是Python的新手,并且只学习了一个星期所以请原谅我,如果答案对于那些经验丰富的人来说真的很明显.我写了一个简单的程序如下,不明白为什么我没有得到"错误:列表索引超出范围".

def sum13(nums):
    sum=0
    for i in range(1,len(nums)):
        if nums[i]==13 or nums[i-1]==13:
            sum=sum
        else:
            sum=sum+nums[i]
    if len(nums)>=1:
        if nums[0]==13:
            sum=sum
        else:
            sum=sum+nums[0]
    return sum

print(sum13([]))
Run Code Online (Sandbox Code Playgroud)

在函数中使用for循环时sum13(nums),我指出range(1,len(nums)),索引1不存在于空列表中.为什么no error: list index out of rangesum13(nums)在空列表中使用该功能?

Bak*_*riu 7

因为

>>> len([])
0
Run Code Online (Sandbox Code Playgroud)

>>> range(1, 0)
[]
Run Code Online (Sandbox Code Playgroud)

(或rangepython3中的空对象)

所以循环不执行任何迭代,并且nums[i]永远不会执行访问.