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