python 的字符串切片:
可以正向切片,也可以反向切片,並且能夠偶數切片,奇數切片( 同時都是支持正向反向的 )
先說索引,python的字符串(數組也是這樣),索引默認從0開始,如果是倒序切片,則最後一個字符串(數組的最後一個元素)的索引是 -1。
當索引爲負數的時候,計數從字符串的右邊開始。
切片的基本模式是:
str[start:end:step]
其中,任意一項都可以爲空。
索引的結束值,不能被取到,被取到的最後一個值是 索引 - 1 對應的元素( 其實因爲是索引下標從0 開始計數的原因 )
1. 省略起始索引的話,如果結束索引是大於0的數,表示起始索引爲0
即 str[:n] = str[0:n]
>>> str = 'abcdefg' >>> str[:1] 'a' >>> str[0:1] 'a'
>>> str[:3] 'abc' >>> str[0:3] 'abc'
2. 省略結束索引的話,如果起始索引是大於0的。表示結束索引是最後一個,這種情況是不同於結束索引等於
>>> str[2:] 'cdefg' >>> str[2:7] 'cdefg'
3. 省略step的話,又省略end的話,step默認爲1 ,即正向切片,省略end,而start爲正的情況,前面已經說過,表示end爲最後一個字符。
>>> str[2:] 'cdefg' >>> str[2::1] 'cdefg'
3.1 如果step 爲負值,表示反向切片,或者叫倒序切片
>>> str = 'abcdefg' >>> str[2::-1] 'cba'
3.1.1 在 倒序切片的時候,如果end或者start哪個省略了,前文已經表述。
3.1.2 如果想做 奇數切片,那麼就要在step的選擇上做文章:
>>> str = 'abcdefg' >>> str[::2] 'aceg'
4. 現在說明 start 或者 end 爲負的情況:
4.1
這個需要跟 step結合起來說,如果step爲正(省略step的話,默認就是正,爲1)
這種情況,就是從start 開始對應的位置開始,向後,取字符,一直到字符串結束。
>>> str = 'abcdefg' >>> str[-3::] 'efg' >>> str[-6::] 'bcdefg' >>> str[-6:] 'bcdefg'
4.2 如果step 爲負的話,當start也爲負的時候,
step爲-1 表示 反向切片,即倒序切片。而start爲負數表示,從負數索引對應的那個元素開始取元素
# -6 對應b ,-1 表示反向切片 >>> str = 'abcdefg' >>> str[-6::-1] 'ba'