2016-04-18 72 views
0
string = "ABCDEFGH" 

任何人都可以解釋爲什麼在string[start:end:stride]開始總是從0開始,同時結束與1開始。列表分片的開始和結束

例如 string[0:3:1]輸出結果爲"ABC"。正如你可以看到我說end = 3所以不應該string[0:3:1]"ABCD"因爲電腦先讀取0第一?

還有一件事爲什麼:我沒有得到 string[0:8:-1]的結果。不應該是"HGFEDCBA"?我不知道是不是syntax不對,但我可以printstring[::-1]的結果。

+2

因爲'start'包含在內,'end'不包含在內。這樣,'end - start'會給你片的長度。當你有一個長度爲n的'list','list [n]'超出範圍時,最後一個元素將是'list [n-1]' – Will

+0

謝謝大家,現在它已經成功了。 – Noobrammer

回答

0

由於len(string)=8,片段string[0:8]被解釋爲「所有存儲器索引0-7」(即8個總索引)。 Python中的最後一個索引是「最多但不包括」。

對於問題的第二部分,語法是string[7::-1]string[0:8:-1]從0開始並嘗試增加「向後」,但由於它在迭代開始時已達到「0」,因此不會發生遍歷。