Python的切片是特別常用的功能,主要用於對列表的元素取值。使用切片也會讓你的代碼顯得特別Pythonic。
切片的主要聲明如下,假設現在有一個list,命名為alist:
alist = [0,1,2,3,4]
切片語法的基本形式為:
alist[start:stop:step]
可以看出對於列表的切片操作有三個參數,分別為:
- start:起始位置
- stop:終止位置
- step:步長
三個參數都是可選參數,意義為list的下標,即index。step參數默認值為1。表現形式有以下幾種:
alist[start:stop]
alist[start:]
alist[:stop]
alist[:]
- 第一種方式指定了start與stop參數,從start指定的下標開始取alist的元素,直到stop-1,例如 a[1:3] 的結果為 [1,2] 。
- 第二種方式會從start指定的下標開始,取alist剩余元素。例如 a[1:] 會得到 [1,2,3,4] 。
- 第三種方式會從alist的開始,取list元素,直到下標為stop-1,例如 a[:4] 會得到結果 [0,1,2,3]
- 第四種方式沒有指定start與stop參數,則會返回整個列表。
- 第五種方式點擊進入,免費領取高品質python學習資料大全,適合在校大學生,小白,想轉行,想提升自己的都可以加入。
需要注意的是, :stop 表示不在選定切片中的第一個值, alist[start:stop] 的取值類似於數學中的取值范圍為 [start, stop) , 所以在步長默認為1的情況下, start-stop 的結果即為所取元素的數量。
負值用法
start與stop參數為負值
start與stop的值可以是負值,表示取值是從list的最后開始,而不是開頭。 例如:
alist[-1] alist[-3:] alist[:-1] [2,3,4] [0,1,2,3]
step參數為負值
step為負值時候表示將列表逆向,最簡單的例子如下:
alist[::-1]
輸出結果為 [4,3,2,1,0] 。這個例子實際是以下面的這個形式返回,
[alist[-1], alist[-1-step], ..., alist[0]]
即從倒數第一個元素開始,每一步加上步長,因為這里步長為負數,所以是減法,直到alist的開頭。 知道這個原理,就能明白一些加上了start與stop參數的復雜寫法,例如:
指定了start參數
alist[1::-1]
實際上是這樣返回:
[alist[1], alist[1-step], ..., alist[0]]
因此,返回的是 [1,0]
指定了stop參數
alist[:1:-1]
實際上是這樣返回:
[alist[-1], alist[-1-step], ..., alist[stop+1]]
因此,返回的是 [4, 3, 2] 。
同時指定了start與stop參數
注意,由於是逆序,所以start參數應該大於stop參數。
alist[3:1:-1]
實際上是這樣返回:
[alist[start], alist[start-step], ..., alist[stop+1]]
因此,返回的是 [3,2]
我們可以看出,
- 如果指定了start參數,則從start參數index開始取元素,直到遇到stop下標或者list的第一個元素。
- 如果未指定start參數,則從list倒數第一個元素開始,直到遇到stop下標或者list的第一個元素。
總結
切片語法的使用特別靈活,如果正確掌握了它的用法,能夠簡化你的代碼。需要注意的是,Python也提供了slice類用於制造切片,例如:
alist[start:stop:step]
實際上等價於
alist[(slice(start,stop,step))]
以上所述是小編給大家介紹的Python 切片語法,希望對大家有所幫助