Python:step的深入

學習完基礎發現其實還很多細節沒搞清楚,於是百度了很多,自己總結了一篇筆記

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. 例如有如下字符串:
    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。

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