MATLAB拋出了這樣的錯誤:爲什麼Python不會爲此拋出錯誤?
>> a = [2,3,4]
>> a(3:4)
index out of bounds
如果類似的事情是與Python試過了,爲什麼是不是違法?
>>> a = [2,3,4]
>>> a[2:3]
[4]
考慮到編號從Python中的零開始,Python中的索引'3'是否越界?
MATLAB拋出了這樣的錯誤:爲什麼Python不會爲此拋出錯誤?
>> 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]
從docs的字符串(適用於列表,元組以及):
退化的切片索引被處理優雅地:太 大的索引被字符串大小替換,小於 下限的上限返回空字符串。
Docs(列表):
的
s
從i
到j
切片被定義爲物品的序列與 索引k
使得i <= k < j
。如果i
或j
大於len(s)
,則使用len(s)
。如果省略i
或None
,請使用0
。如果省略j
或None
,則使用len(s)
。如果i
大於或等於j
,則切片爲空。
超出範圍的負切片索引會被截斷,但不嘗試一下本作的單元素(非片)指數:
>>> word = 'HelpA'
>>> word[-100:]
'HelpA'
你有一個範圍存在。只要範圍內的一個索引超出界限,就會停止提取元素的過程。
Python在切片中沒有錯誤。
由於[2:3]
爲4到下一ELE - 1,它返回4.
切片從未引發錯誤。它至少可以做的是返回一個空列表/元組/串(取決於當然的類型):
>>> a[12312312:]
[]
[start:end:step]
所以索引2是4
,然後end - 1
是索引2是4
。
正如其他人所回答的那樣,Python通常不會爲超出範圍的分片引發異常。但是,這很重要,您的切片是而不是超出範圍。切片被指定爲封閉開放間隔,其中間隔的開始是包含性的,並且結束點是獨佔的。
換句話說,[2:3]
是一個三元素列表的完美有效切片,它指定了一個從索引2開始到索引3之前結束的單元素間隔。因爲你的例子中的3是非法的,所以不可能在切片中包含列表的最後一個元素。