深入理解Python切片

2022-08-04 18:54:18 字數 1443 閱讀 5058

python序列的切片很基礎同時也很重要,最近看到乙個[::-1]的表達,不明所以,查了一些資料並實際操作,對python切片有了更深刻的認識,以下結合例子詳細說明。

先看下切片的基本語法,一般認為切片語法是[n:m],是個半閉合區間,等效於數學上[n,m)取值範圍,取n不取m, n和m都可以省略,n看下面的例子,通過控制step可以更靈活的取資料,wonderful!

>>>s

[1, 2, 3, 4, 5, 6, 7, 8]

>>>s[::]

[1, 2, 3, 4, 5, 6, 7, 8]

>>> s[::1]

[1, 2, 3, 4, 5, 6, 7, 8]

>>> s[::2]

[1, 3, 5, 7]

那step = -1是什麼意思?[::-1]實操的結果如何,如何解釋?

>>> s[::-1]

[8, 7, 6, 5, 4, 3, 2, 1]

查詢得知s可以為負數,並且s的正負對取切片的行為有影響,什麼影響?2個方面:

1.影響n,m的預設值

2.影響切片取值方向

s預設為1,如果》0,取切片從左向右取,預設n=0,m=len(s)

>>>s[0:len(s)]

[1, 2, 3, 4, 5, 6, 7, 8]

因為是從左往右取,所以要求nm,從左往右取,-2位置上在-1的左邊,所以取不到,第二個n=-2,m=-1,從-2向右-1取,得7,符合上述規則!

>>> s[-1:-2]

>>> s[-2:-1]

[7]

如果s<0,會如何

預設值:n= -1,m = -len(s)-1

方向:從右向左取

這就解釋了[::-1]的結果,[::]代表取全序列,-1代表從右向左取步長為1

>>> s[::-1]

[8, 7, 6, 5, 4, 3, 2, 1]

等效於

>>> s[-1:-len(s)-1:-1]

[8, 7, 6, 5, 4, 3, 2, 1]

理解了以上原則,就容易理解以下切片的結果了,可以看到此時,例1,n>m,但可以取到值,例2,n

>>> s[-1:-2:-1]

[8]>>> s[-2:-1:-1]

總之s的正負會影響切片取值方向,使用中需要特別注意。

補充:上述結論也可以解釋以下切片結果:

>>> s="hello world"

>>> s[-5:0]

''>>> s[-5:-1]

'worl'

>>> s[-5:1]

''>>> s[-5:0:-1]

'w olle'

>>> s[-5:1:-1]

'w oll'

>>>

python深入 Python的深入理解

處理檔案和目錄 python 3 帶有乙個模組叫做 os,代表 作業系統 operating system os 模組 包含非常多的函式用於獲取 和修改 本地目錄 檔案程序 環境變數等的資訊。python 盡最大的努力在所有支援的作業系統上提供乙個統一的api,這樣你就可以在保證程式能夠在任何的計算...

深入理解Python類

c 中,類有兩個關鍵的內建函式,建構函式和析構函式。在python中,其實也有類似的函式,他們就是 def init self pass def del self pass def enter self pass def exit self pass在物件建立時執行操作。在物件析構時執行操作。注意 ...

Python的深入理解

處理檔案和目錄 python 3 帶有乙個模組叫做 os,代表 作業系統 operating system os 模組 包含非常多的函式用於獲取 和修改 本地目錄 檔案程序 環境變數等的資訊。python 盡最大的努力在所有支援的作業系統上提供乙個統一的api,這樣你就可以在保證程式能夠在任何的計算...