詳解Python 切片語(yǔ)法
Python的切片是特別常用的功能,主要用于對(duì)列表的元素取值。使用切片也會(huì)讓你的代碼顯得特別Pythonic。
切片的主要聲明如下,假設(shè)現(xiàn)在有一個(gè)list,命名為alist:
alist = [0,1,2,3,4]
切片語(yǔ)法的基本形式為:
alist[start:stop:step]
可以看出對(duì)于列表的切片操作有三個(gè)參數(shù),分別為:
- start:起始位置
- stop:終止位置
- step:步長(zhǎng)
三個(gè)參數(shù)都是可選參數(shù),意義為list的下標(biāo),即index。step參數(shù)默認(rèn)值為1。表現(xiàn)形式有以下幾種:
alist[start:stop]
alist[start:]
alist[:stop]
alist[:]
- 第一種方式指定了start與stop參數(shù),從start指定的下標(biāo)開(kāi)始取alist的元素,直到stop-1,例如 a[1:3] 的結(jié)果為 [1,2] 。
- 第二種方式會(huì)從start指定的下標(biāo)開(kāi)始,取alist剩余元素。例如 a[1:] 會(huì)得到 [1,2,3,4] 。
- 第三種方式會(huì)從alist的開(kāi)始,取list元素,直到下標(biāo)為stop-1,例如 a[:4] 會(huì)得到結(jié)果 [0,1,2,3]
- 第四種方式?jīng)]有指定start與stop參數(shù),則會(huì)返回整個(gè)列表。
需要注意的是, :stop 表示不在選定切片中的第一個(gè)值, alist[start:stop] 的取值類(lèi)似于數(shù)學(xué)中的取值范圍為 [start, stop) , 所以在步長(zhǎng)默認(rèn)為1的情況下, start-stop 的結(jié)果即為所取元素的數(shù)量。
負(fù)值用法
start與stop參數(shù)為負(fù)值
start與stop的值可以是負(fù)值,表示取值是從list的最后開(kāi)始,而不是開(kāi)頭。 例如:
alist[-1]
alist[-3:]
alist[:-1][2,3,4]
[0,1,2,3]
step參數(shù)為負(fù)值
step為負(fù)值時(shí)候表示將列表逆向,最簡(jiǎn)單的例子如下:
alist[::-1]
輸出結(jié)果為 [4,3,2,1,0] 。這個(gè)例子實(shí)際是以下面的這個(gè)形式返回,
[alist[-1], alist[-1-step], ..., alist[0]]
即從倒數(shù)第一個(gè)元素開(kāi)始,每一步加上步長(zhǎng),因?yàn)檫@里步長(zhǎng)為負(fù)數(shù),所以是減法,直到alist的開(kāi)頭。 知道這個(gè)原理,就能明白一些加上了start與stop參數(shù)的復(fù)雜寫(xiě)法,例如:
指定了start參數(shù)
alist[1::-1]
實(shí)際上是這樣返回:
[alist[1], alist[1-step], ..., alist[0]]
因此,返回的是 [1,0]
指定了stop參數(shù)
alist[:1:-1]
實(shí)際上是這樣返回:
[alist[-1], alist[-1-step], ..., alist[stop+1]]
因此,返回的是 [4, 3, 2] 。
同時(shí)指定了start與stop參數(shù)
注意,由于是逆序,所以start參數(shù)應(yīng)該大于stop參數(shù)。
alist[3:1:-1]
實(shí)際上是這樣返回:
[alist[start], alist[start-step], ..., alist[stop+1]]
因此,返回的是 [3,2]
我們可以看出,
- 如果指定了start參數(shù),則從start參數(shù)index開(kāi)始取元素,直到遇到stop下標(biāo)或者list的第一個(gè)元素。
- 如果未指定start參數(shù),則從list倒數(shù)第一個(gè)元素開(kāi)始,直到遇到stop下標(biāo)或者list的第一個(gè)元素。
總結(jié)
切片語(yǔ)法的使用特別靈活,如果正確掌握了它的用法,能夠簡(jiǎn)化你的代碼。需要注意的是,Python也提供了slice類(lèi)用于制造切片,例如:
alist[start:stop:step]
實(shí)際上等價(jià)于
alist[(slice(start,stop,step))]
以上所述是小編給大家介紹的Python 切片語(yǔ)法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
Django中如何防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的實(shí)現(xiàn)
這篇文章主要介紹了Django中如何防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理
這篇文章主要介紹了使用Python處理EXCEL基礎(chǔ)操作篇2,如何使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理,文中提供了解決思路和部分實(shí)現(xiàn)代碼,一起來(lái)看看吧2023-03-03
使用Python實(shí)現(xiàn)將PDF轉(zhuǎn)為圖片
這篇文章主要為大家詳細(xì)介紹了python如何借用第三方庫(kù)Spire.PDF for Python,從而實(shí)現(xiàn)將PDF轉(zhuǎn)為圖片的功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
深入淺析Python數(shù)據(jù)分析的過(guò)程記錄
我們先利用?Jupyter?Notebook?來(lái)進(jìn)行分析,然后,在得到成果以后,利用?Pycharm?來(lái)進(jìn)行完整的程序設(shè)計(jì),對(duì)Python數(shù)據(jù)分析的過(guò)程記錄感興趣的朋友一起看看吧2022-01-01
python如何使用socketserver模塊實(shí)現(xiàn)并發(fā)聊天
這篇文章主要介紹了python如何使用socketserver模塊實(shí)現(xiàn)并發(fā)聊天,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Python中pygame的mouse鼠標(biāo)事件用法實(shí)例
這篇文章主要介紹了Python中pygame的mouse鼠標(biāo)事件用法,以完整實(shí)例形式詳細(xì)分析了pygame響應(yīng)鼠標(biāo)事件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Python針對(duì)不同文本長(zhǎng)度的處理方案總結(jié)與對(duì)比
這篇文章主要為大家詳細(xì)介紹了Python如何針對(duì)不同文本長(zhǎng)度的處理方案,結(jié)合層次化編碼和檢索優(yōu)化策略,感興趣的小伙伴可以參考一下2025-02-02

