IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
切片(slice)用來(lái)獲取列表中的片段,即原始列表的子列表。切片用被方括號(hào)“[]”括起來(lái)且用冒號(hào)“:”分隔的數(shù)字來(lái)表示:
- >>> fruits = ['apple', 'banana', 'watermelon', 'strawberry', 'orange']
- >>> fruits[0:3] # 獲取列表中的前3項(xiàng)
- ['apple', 'banana', 'watermelon']
- >>> fruits[-2:-1] # 使用負(fù)數(shù)切片
- ['strawberry']
注意,切片包含索引項(xiàng)的起始值,而不包含結(jié)束值。因此,使用切片fruits[0:3]獲取的是fruits列表的前3項(xiàng),如圖所示。
使用負(fù)數(shù)切片fruits[-2:-1]獲取的是fruits列表的倒數(shù)第2項(xiàng),如圖所示。
初學(xué)者可能會(huì)認(rèn)為切片也包含索引項(xiàng)的結(jié)束值,從而獲取到錯(cuò)誤的切片。例如,嘗試獲取列表的全部項(xiàng):
- >>> fruits = ['apple', 'banana', 'watermelon', 'strawberry', 'orange']
- >>> fruits[0:4] # 錯(cuò)誤的切片,只能獲取到列表中的前4項(xiàng)
- ['apple', 'banana', 'watermelon', 'strawberry']
- >>> fruits[0:5] # 正確的切片,獲取列表的全部項(xiàng)
- ['apple', 'banana', 'watermelon', 'strawberry', 'orange']
1.1 超出列表范圍的切片
如果嘗試獲取超出列表范圍的切片,Python解釋器不會(huì)報(bào)錯(cuò),而是返回一個(gè)空列表:
- >>> fruits[100:200]
- []
同樣,如果切片中索引項(xiàng)的起始值大于結(jié)束值,Python解釋器同樣不會(huì)報(bào)錯(cuò),而是返回一個(gè)空列表:
- >>> fruits[3:0]
- []
1.2 切片的簡(jiǎn)寫(xiě)
切片的簡(jiǎn)寫(xiě)分為以下三種情況:
①省略索引項(xiàng)的起始值,語(yǔ)法格式為“列表名[:結(jié)束值]”,與“列表名[0:結(jié)束值]”是等價(jià)的。
②省略索引項(xiàng)的結(jié)束值,語(yǔ)法格式為“列表名[起始值:]”,與“列表名[起始值:列表長(zhǎng)度]”是等價(jià)的。
③省略索引項(xiàng)的起始值和結(jié)束值,即獲取列表的全部項(xiàng),語(yǔ)法格式為“列表名[:]”,與“列表名[0:列表長(zhǎng)度]”是等價(jià)的。
下面是一些切片簡(jiǎn)寫(xiě)的示例:
- >>> fruits = ['apple', 'banana', 'watermelon', 'strawberry', 'orange']
- >>> fruits[:3] # 獲取列表中的前3項(xiàng)
- ['apple', 'banana', 'watermelon']
- >>> fruits[-2:] # 獲取列表中的后2項(xiàng)
- ['strawberry', 'orange']
- >>> fruits[:] # 獲取列表的全部項(xiàng)
- ['apple', 'banana', 'watermelon', 'strawberry', 'orange']
前文提到過(guò),fruits[-2:-1]獲取的是倒數(shù)第2項(xiàng),如果試圖獲取倒數(shù)第1項(xiàng):
- >>> # 這兩種方式在此處是等價(jià)的
- >>> fruits[-1:]
- ['orange']
- >>> fruits[-1:5]
- ['orange']
1.3 指定切片的步長(zhǎng)
在執(zhí)行切片操作時(shí),可以指定步長(zhǎng),步長(zhǎng)的值也用冒號(hào)來(lái)分隔。步長(zhǎng)能夠跳過(guò)不想要獲取的項(xiàng)。為了更容易地看出步長(zhǎng)的工作方式,重新創(chuàng)建一個(gè)包含從0到9的整數(shù)列表:
- >>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
步長(zhǎng)的默認(rèn)值為1,即一個(gè)挨著一個(gè),前面使用過(guò)的切片全都是這樣。下面兩種寫(xiě)法是等價(jià)的:
- >>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- >>> numbers[:]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- >>> numbers[::1]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
如果指定的步長(zhǎng)大于1,那么會(huì)跳過(guò)一些項(xiàng)。當(dāng)切片的步長(zhǎng)為2時(shí),會(huì)跳過(guò)1項(xiàng);當(dāng)切片的步長(zhǎng)為3時(shí),會(huì)跳過(guò)2項(xiàng):
- >>> numbers[::2]
- [0, 2, 4, 6, 8]
- >>> numbers[::3]
- [0, 3, 6, 9]
索引值可以為負(fù)數(shù),同樣步長(zhǎng)也可以為負(fù)數(shù)。當(dāng)步長(zhǎng)為負(fù)數(shù)時(shí),列表從后向前取。當(dāng)切片的步長(zhǎng)為-1時(shí),即為反轉(zhuǎn)列表;當(dāng)切片的步長(zhǎng)為-2時(shí),會(huì)反轉(zhuǎn)列表并跳過(guò)1項(xiàng):
- >>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- >>> numbers[::-1] # 步長(zhǎng)為-1
- [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
- >>> numbers[::-2] # 步長(zhǎng)為-2
- [9, 7, 5, 3, 1]
>>本文地址:http://liujunjsxg.cn/zhuanye/2020/52890.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?
07月15日Java
咨詢(xún)/試聽(tīng)07月15日Python+人工智能
咨詢(xún)/試聽(tīng)07月15日Web前端
咨詢(xún)/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢(xún)/試聽(tīng)07月15日大數(shù)據(jù)
咨詢(xún)/試聽(tīng)07月15日Java
咨詢(xún)/試聽(tīng)07月15日Python+人工智能
咨詢(xún)/試聽(tīng)07月15日Web前端
咨詢(xún)/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢(xún)/試聽(tīng)07月15日大數(shù)據(jù)
咨詢(xún)/試聽(tīng)