给定下列表达式:
>>> l = [1,2,3]
>>> l[10:20] = [4,5]
>>> l
[1, 2, 3, 4, 5]
为什么Python不会提醒要删除的不存在的项目?
l.remove(55)
会引发ValueError异常。给定下列表达式:
>>> l = [1,2,3]
>>> l[10:20] = [4,5]
>>> l
[1, 2, 3, 4, 5]
l.remove(55)
会引发ValueError异常。l.remove(55)
报错是因为您的列表中不存在值为55的元素。
另一方面,l[10:20] = [4,5]
不会崩溃您的代码,因为这种 切片
方法将尝试在这些索引上添加元素,如果无法添加,它将在数组的最后位置添加新元素。
此外,如果您尝试执行(例如)l[10]=10
,则会引发以下异常:IndexError: list index out of range
"Hello World"[6:15]
不会引发错误,而只是计算为"World"
。 https://docs.python.org/3.0/tutorial/introduction.html: “退化的切片索引被优雅地处理:如果索引过大,则被替换为字符串大小;如果上限小于下限,则返回空字符串。” - Christoph