Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';Python不会为此抛出错误吗?_Python_Matlab_Python 2.7_Scilab - Fatal编程技术网

为什么';Python不会为此抛出错误吗?

为什么';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] >>>

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]
>>> 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:]
[]