日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 序列操作之切片

發布時間:2025/1/21 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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。
示例:

>>> a[1:6:2] [2, 4, 6]

上面代碼顯式指定了步長。如果步長大于1,將跳過一些元素,比如上面指定步長為2,那么將從七點和終點之間每隔一個元素提取一個元素。

使用步長時,前面兩個指定也可以省略,如下:

>>> a[::3] [1, 4, 7, 10]

注意:步長不能為0,否則無法移動。
示例:

>>> a[1:5:0] Traceback (most recent call last):File "<stdin>", line 1, in <module> ValueError: slice step cannot be zero

如果步長為負數,將從右到做提取元素。
示例如下:

>>> a[6:1:-1] [7, 6, 5, 4, 3] >>> a[::-2] [10, 8, 6, 4, 2] >>> a[1:8:-2] [] >>> a[5::-2] [6, 4, 2] >>> a[:5:-2] [10, 8]

如果是第一次接觸切片,對于上面的輸出結果,可能會有些意外,比如a[1:8:-2]輸出為空序列,這里是有點不太好理解,總結為以下幾點,實在不懂,那就只能死記硬背啦。

1.當步長為負數時,第一個索引必須比第二個索引大,否則輸出為空序列;
2.當步長為負數時,可以省略起始或結束索引,省略索引后,就不存在一定要第一個索引必須比第二個索引大了
3.步長為正數時,索引從起點到終點,而步長為負數時,索引從終點到起點。

切片在序列中用得非常多,但是有很多小細節需要注意,要不然很容易出錯,也正是因為這些特殊的語法,才體現了 Python 與其它語言的不同之處吧。

本文知識點來源于書籍《Python 基礎教程》第三版。

總結

以上是生活随笔為你收集整理的Python 序列操作之切片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。