虽然此代码会引发indexError:
In [1]: lst = [1, 2, 3]
In [2]: lst[3]
IndexError: list index out of range
使用“超出范围索引”对列表进行切片不会产生任何错误。
In [3]: lst[3:]
Out[3]: []
这种设计的基本原理是什么?
答案 0 :(得分:14)
当您访问索引超出其长度的列表中的元素时,我们无法返回任何内容。 (我们无法表示不存在的元素)。这就是抛出错误的原因。但是当您进行切片时,您正在对原始列表进行切片 COPY ,如果开头或结尾无效,则新列表可以为空。
答案 1 :(得分:0)
能够测试元素是否存在是很好的:
if sys.argv[2:]:
# do something with sys.argv[2], knowing it exists