Python 序列操作之切片
前言
在Python所有序列中,有幾種通用的操作,包括:索引、切片、相加、相乘和成員資格的檢查。 其中切片算是 Python 的序列操作中比較特別的一種用法, 使用起來非常方便,并且功能也十分強大。今天主要總結關于切片的用法里面幾個容易出錯的點。
切片的簡寫
先來看個簡答的示例:
>>> a = [1,2,3,4,5,6,7,8,9,10] >>> a[2:4] [3, 4] >>> a[1:5] [2, 3, 4, 5]如上所示,切片適合于提取序列的一部分,其中的編號非常重要:第一個索引是包含的第一個元素的編號,但第二個索引是切片后余下的第一個元素的編號。
簡而言之就是,提供兩個索引來指定切片的邊界,其中第一個索引指定的元素包含在切片內,但是第二個索引指定的元素不包含在切片內。
如果要從列表末尾開始數,可使用負數索引,例如:
>>> a[-4:-1] [7, 8, 9]這樣好像不能輸出最后一個列表中最后一個數字。如果使用索引0,即到達列表末尾后再前進一步所處的位置,結果如下:
>>> a[-4:0] []所以這里需要注意的是:在執行切片操作時,如果第一個索引指定的元素位于第二個索引指定的元素后面,那么結果就為空序列。
這里-4指定的元素為7,而0指定的元素為1,所以上面的語句返回為空序列。
那如果要輸出序列的最后一個值,可以使用一種簡寫:如果切片結束于序列末尾,可省略第二個索引,如下:
>>> a[-4:] [7, 8, 9, 10]同樣,如果切片始于序列開頭,可省略第一個索引:
>>> a[:4] [1, 2, 3, 4]那如果要復制整個序列,可以兩個索引都省略:
>>> a[:] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]更大的步長
切片操作時,我們通常顯式或隱士地指定起點和終點,但通常省略另一個參數,即步長。在普通的切片中,步長為1。
示例:
上面代碼顯式指定了步長。如果步長大于1,將跳過一些元素,比如上面指定步長為2,那么將從七點和終點之間每隔一個元素提取一個元素。
使用步長時,前面兩個指定也可以省略,如下:
>>> a[::3] [1, 4, 7, 10]注意:步長不能為0,否則無法移動。
示例:
如果步長為負數,將從右到做提取元素。
示例如下:
如果是第一次接觸切片,對于上面的輸出結果,可能會有些意外,比如a[1:8:-2]輸出為空序列,這里是有點不太好理解,總結為以下幾點,實在不懂,那就只能死記硬背啦。
1.當步長為負數時,第一個索引必須比第二個索引大,否則輸出為空序列;
2.當步長為負數時,可以省略起始或結束索引,省略索引后,就不存在一定要第一個索引必須比第二個索引大了
3.步長為正數時,索引從起點到終點,而步長為負數時,索引從終點到起點。
切片在序列中用得非常多,但是有很多小細節需要注意,要不然很容易出錯,也正是因為這些特殊的語法,才體現了 Python 與其它語言的不同之處吧。
本文知識點來源于書籍《Python 基礎教程》第三版。
總結
以上是生活随笔為你收集整理的Python 序列操作之切片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一个 PyQt5程序
- 下一篇: Python中运算符 is 和 == 的