2013-04-09 60 views
0

我剛剛開始學習python,並且我已經涉及了切片字符串。爲什麼切片endindex不是endindex

當我鍵入

suitcase = ["sunglasses", "hat", "passport", "laptop", "suit", "shoes"] 
print suitcase[0:1] 

我希望它打印['sunglasses', 'hat],但我得到['sunglasses']。從我讀到的aList[beginIndex:endIndex],但從我的經驗來看,它更像aList[beginIndex:endIndex+1],以獲得你最後的索引。

有人可以解釋爲什麼它是這樣嗎?我無法理解它背後的推理。

+1

你會如何選擇第一個元素呢?我認爲這非常合理。 – root 2013-04-09 19:14:18

回答

0

Python中的切片被定義爲包含/排他性的,即您想要的第一個項目,然後是不需要的第一個項目

我具體不知道他們爲什麼這樣做的,但它是與如何range()工作一致,也與len()(即整個集裝箱x的片爲[0:len(x)]),效果很好;這也與負面切片發揮很好:x[-1]x[len(x)-1]

2

docs:「從i到j的s的片段被定義爲具有索引k的項目的序列,使得i < = k < j」。

2

我認爲最好的參數是你可以使用endIndex - startIndex得到片段返回的元素的數量。

這也與內置的range()功能密切相關。如果使用兩個參數,則它們被解釋爲開始和結束索引,但是如果只使用一個參數,則它是停止索引,起始索引設置爲0。所以range(5)列出了5個元素。如果切片按照它們的方式工作,則認爲它們應該可能會具有相同的行爲,而返回6個元素的range(5)會相當混亂。