Python進階5——切片

關於切片已經在Python知識點3——列表操作中簡要介紹,切片是序列類型的一部分,不僅列表能切片,元組,字符串也能切片

切片會忽略區間的最後一個元素,也就是左閉右開

 

切片的一般形式是s[a:b:c],其中a是起始下標,b是終止下標,不包含,c是取值間隔,整體的意思就是對s做切片,從a開始,然後a的下標加c後,取對應下標的值,直到下標b爲止(不包括b)

c可以爲負值,如果負值表示反向,如果是-1就是倒序,-2就是從最後一個元素開始,下標每次-2取對應的值

 

c爲負數的示例

a=list(range(1,20))
print(a)
print(a[::-3])#從後向前,每次下標減三取一次值,包括所有元素
print(a[10:1:-3])#從下標爲10的元素開始,每次下標-3取一次值,不包括下標爲1的元素

 

一般來說,c是大於0的,如果c爲負數,那麼a一定要大於b,否則輸出的是空對象

print(a[1:10:-2])

 

切片函數slice

函數slice的作用就是將s[a:b:c]中的a:b:c用slice(a,b,c)替換,s[slice(a,b,c)]效果和s[a:b:c]完全一樣

因爲abc可變化,所以slice的參數有四種情況

 

1.slice(None)

print(a[slice(None)], a[::])

 

2.slice(b)

print(a[slice(4)], a[:4:])

 

3.slice(a,b)

print(a[slice(1,10)], a[1:10])

 

4.slice(a,b,c)

print(a[slice(1,16,3)], a[1:16:3])

 

操作切片

將切片作爲左值,就可以對切片進行修改

 

舉例

b=list(range(1,15))#生成一個列表
print(b)
print('-------------')
b[3:6]=[20,50]#將下標爲3,4,5這三個元素組成的切片替換爲[20,50]
print(b)
print('-------------')
del b[10:14]#刪除切片[10:14],也就是刪除下標爲10,11,12,13的四個元素
print(b)
print('-------------')
b[2:9:2]=[10,20,30,40]#將切片替換爲[10,20,30,40],也就是下標爲2,4,6,8的四個元素替換爲[10,20,30,40]
print(b)
print('-------------')
b[11:13]=[0]#將下標爲11,12的兩個元素組成的列表切片替換爲[0]
print(b)

對於上面的b[2:9:2]=[10,20,30,40],中間的9可以忽略不寫,寫了有可能報錯

b[2:9:2]=[10,20,30]

因爲左值切片包含元素的下標爲2468四個元素,而右值只有三個元素,所以切片元素的數目不匹配,報錯

所以在對s[a:b:c]類型的切片賦值是,要注意切片元素的個數匹配

 

參考書籍:《流暢的Python》

歡迎大家評論交流,作者水平有限,如有錯誤,歡迎指出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章