學習完基礎發現其實還很多細節沒搞清楚,於是百度了很多,自己總結了一篇筆記
1.Sequence[start🔚step] python 的序列切片中,第一個:隔離了 起始索引 和 結束索引,第二個:隔離了 結束索引和 步長
step爲正,則從左到右切片,如果 start > end,則爲空
step爲負,則從右到左切片,如果 start < end,則爲空
針對形如 string[start🔚step] 的分片中,步長step爲正數的情況下,start必須小於end;步長step爲負數的情況下,start必須大於end,否則就爲空。
start 和 end 填空,前者表示最開始,後者表示最後一個, 同時爲空的時候,表示取所有。至於方向,取決於 step
可以總結一句規律,step 爲正表示從左到右切片,反之爲右到左。然後根據index 依次切片
a=list(i for i in range(1,11))
a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]a[8:3:-1]
[9, 8, 7, 6, 5] # 右-》左切片,step 爲1,a[8]=9, a[7]=8, … a[4]=5, 8-3=5個a[10:0:-2]
[10, 8, 6, 4, 2] # 右-》左切片, 切片的時候,不存在 index 越界情況,a[10]不存在,a[9]=10, a[7]=8, a[5]=6…(注意這個例子,不是從10開始減,而是從9)#上面的10可以超出索引範圍使用,下面的使用10爲什麼引用是分片引用是空???
a[0:10:-2] # start < end step 爲負, 方向爲右-》左,第一個是 a[0], a[0]的左邊就再也沒有值了。爲空
[]a[::-2] # a[:]表示去所有,step 爲負就放方向啦
[10, 8, 6, 4, 2]下面怎麼理解??
a[5::-2] # 右-》左,等價 a[5:0:-2] a[5]=6, a[3]=4, a[1]=2
[6, 4, 2]下面怎麼理解??
a[:5:-2] # 右-》左, 等價與 a[9:5:-2] a[9]=10, a[7]=8
[10, 8]
- 例如有如下字符串:
1 string = “welcome to jb51_”
可以使用分片符和步長符:來給字符串進行分片和定義步長
string = “welcome to jb51_”
#默認返回全部
print string[:]
#返回1到9結果
print string[1:9]
#返回1到9結果,步長爲1
print string[1:9:]
#返回1到9結果,步長爲2
print string[1:9:2]
#返回1到9結果,步長爲-1
print string[1:9:-1]
#轉置
print string[::-1]
結果如下:
這裏發現
#返回1到9結果,步長爲-1
print string[1:9:-1]
沒有輸出1到9的逆序,這時將string[1:9]看成第一個字符串,然後轉置就行了
#返回1到9結果,步長爲-1
print string[1:9][::-1]
用這個方法判斷某個字符串的子串是否爲迴文串(正讀反讀都一樣,例如level,noon)就很有靈性了
注:針對形如 string[start🔚step] 的分片中,步長step爲正數的情況下,start必須小於end;步長step爲負數的情況下,start必須大於end。
結果如下:
這裏發現
#返回1到9結果,步長爲-1
print string[1:9:-1]
沒有輸出1到9的逆序,這時將string[1:9]看成第一個字符串,然後轉置就行了
#返回1到9結果,步長爲-1
print string[1:9][::-1]
用這個方法判斷某個字符串的子串是否爲迴文串(正讀反讀都一樣,例如level,noon)
注:針對形如 string[start🔚step] 的分片中,步長step爲正數的情況下,start必須小於end;步長step爲負數的情況下,start必須大於end。