Python索引在列表切片中超出范围

时间:2013-11-17 16:31:35

标签: python list slice

虽然此代码会引发indexError:

In [1]: lst = [1, 2, 3]
In [2]: lst[3]
IndexError: list index out of range

使用“超出范围索引”对列表进行切片不会产生任何错误。

In [3]: lst[3:]
Out[3]: []

这种设计的基本原理是什么?

2 个答案:

答案 0 :(得分:14)

当您访问索引超出其长度的列表中的元素时,我们无法返回任何内容。 (我们无法表示不存在的元素)。这就是抛出错误的原因。但是当您进行切片时,您正在对原始列表进行切片 COPY ,如果开头或结尾无效,则新列表可以为空。

答案 1 :(得分:0)

能够测试元素是否存在是很好的:

if sys.argv[2:]:
    # do something with sys.argv[2], knowing it exists