为什么';Python不会为此抛出错误吗?
MATLAB为此抛出一个错误:为什么';Python不会为此抛出错误吗?,python,matlab,python-2.7,scilab,Python,Matlab,Python 2.7,Scilab,MATLAB为此抛出一个错误: >> a = [2,3,4] >> a(3:4) index out of bounds 如果Python也尝试过类似的东西,为什么不违法呢 >>> a = [2,3,4] >>> a[2:3] [4] 考虑到python中的编号从零开始,python中的索引“3”不是越界了吗?对于越界索引,切片在python中不会引发错误 >>> s =[1,2,3] >>>
>> a = [2,3,4]
>> a(3:4)
index out of bounds
如果Python也尝试过类似的东西,为什么不违法呢
>>> a = [2,3,4]
>>> a[2:3]
[4]
考虑到python中的编号从零开始,python中的索引“3”不是越界了吗?对于越界索引,切片在python中不会引发错误
>>> s =[1,2,3]
>>> s[-1000:1000]
[1, 2, 3]
从on字符串(也适用于列表和元组):
退化的切片索引被优雅地处理:一个过于复杂的索引
“大”替换为字符串大小,其上限小于
下限返回一个空字符串
(名单):
从i
到j
的s
片段定义为具有
索引
k
,这样i就有了一个范围。一旦范围中的一个索引超出边界,提取元素的过程就会停止
Python中的切片没有错误。因为[2:3]
是从4到下一个ele-1,返回4
切片永远不会引起错误。它至少可以返回一个空列表/元组/字符串(取决于课程类型):
[开始:结束:步骤]
因此,索引2是4
,然后end-1
是索引2,它是4
,正如其他人回答的那样,Python通常不会对超出范围的片段提出异常。但是,这一点很重要,您的切片未超出范围。切片被指定为闭合-打开间隔,其中间隔的起点是包含的,终点是独占的
换句话说,[2:3]
是三元素列表的一个完全有效的片段,它指定一个元素间隔,从索引2开始,在索引3之前结束。如果最后一个端点(如示例中的3)后面的一个端点是非法的,则不可能在切片中包含列表的最后一个元素
>>> word = 'HelpA'
>>> word[-100:]
'HelpA'
>>> a[12312312:]
[]