切片是Python中一種用於操作序列型別(如列表、字串和元組)的方法。它通過指定起始索引和結束索引來擷取出序列的一部分,形成一個新的序列。切片是存取特定範圍內的元素,就是一個Area。
說個笑話:切片不是切片,而是切片,但是又是切片。大家理解下呢(末尾放出作者自己的理解),耐心看完,關於Python的切片知識就夠用了,記得一定要自己動手練習。
思考:為什麼要有切片?我拿開始和結尾的索引來輸出特定的元素不行嗎?
答:可以,但是不覺得麻煩嗎。
如果想從某元素一直切片到最後結束,結束索引可以大於陣列長度,如下:
負數切片(從右往左的時候)可以將最後一個元素的索引理解是-1,所以從末尾開始切片如下:
但是這樣也無法包括到最後一個元素,怎麼辦呢?是不是使用下面就可以了呢?
事實上,執行切片操作時,如果第一個索引指定的元素位於第二個索引指定的元素後面(在這裡,倒數第3個元素位於第1個元素後面),結果就為空序列。因為0是第一個元素的索引,-3是後面元素的索引,相當於反了。
那怎麼才能取到最後一個元素呢?省略末尾開始的元素索引即可。
同樣,如果切片始於序列開頭,可省略第一個索引。
想必你也猜到了,如果只有:,就意味著「複製」。
這個時候看著就有意思了,步長為負的時候,為什麼開始索引比結束索引大呢?可以這麼理解:
步長為負的之後,index還是從右向左的,擷取的計算方法是從右向左計算的,這個時候頭就變成了右邊的,含頭不含尾要記住,
即從索引為5的元素開始,從右向左,按步長為1切片,直到最後索引為0,但是最後的元素不參與,只是停止的標記。
技巧:前面兩個引數先看區間,再看後面的步長,然後從右向左。
最後給出作者對於「切片不是切片,而是切片,但是又是切片」的理解。
切片不是切片:切片不是將序列切斷。
而是切片:是切出對一個區域的操作,序列切片之後還是序列。
但是又是切片:切片是按照指定的規則「切」原來的序列之後重新縫合成新的序列。