Python列表的奇怪行为

smi*_*dha 6 python list

为什么这个代码在Python解释器运行时不会抛出错误.

a = ['A', 'B', 'C']
a[20:] = ['D', 'E']
print a
Run Code Online (Sandbox Code Playgroud)

输出是['A', 'B', 'C', 'D', 'E'].我认为Python会在第二个语句中给我一个错误,因为a只有3个元素.编码时此功能是否有任何自然用途?

tux*_*imo 4

这就是 python 的工作原理。在 python 中,切片不会进行边界检查。它只是扩展您的列表,因为它是一个可变对象。

当您通过切片读取超出边界时,这也很有趣:

f = a[20:]
Run Code Online (Sandbox Code Playgroud)

f将是一个空列表。