1. 程式人生 > >Python之字串切片(String Slice)

Python之字串切片(String Slice)

1、切片操作可以從一個字串中,擷取一個字串,Python牛掰之處,好方便

2、看下基本的語法,這是一個全包括的狀態

[start:end:step]

3、預設的幾種用法

先提及幾個關鍵概念:
a、第一個字元的下標是0,即從左到右,是從0開始,然後1、2、3、4、5
b、最後一個字元到下標是-1,即從右到左,是從-1開始,然後-1、-2、-3、-4、-5

因為第一個字元是0,第二個字元是1,1 = 0 + 1, 如果是反方向的話(按照迴圈來看),座標應該是-1 = 0 - 1,所以這樣的理論相當正確

[:end]   //省略start,預設從起始偏移量start、即下標0開始,一直到偏移end處,記住一定是不包含end下標的字元的哦

[start:] //省略end,預設從下標start開始,一直到省略到下標end處,end的預設值是字串的長度或者為-1【錯誤的】(因為不包含最後一個end位置的下標,所以輸出整個字串,但是肯定end的預設值不可能是-1,那樣就不會輸出整個字串了)

[start:end] //即有start、也有end,輸出從start下標到end下標處的字串,記得不包含end下標的字元哈

[start:end:step] //這次多了一個step、step如果不加的話,預設步長肯定是0,畢竟是要把線性表輸出的把,如果改變了step,那就可以是跳躍setp個元素輸出一個元素了

[:] //忘記介紹這種了,一個下標也不填寫的情況,預設是start == 0、end == 字串長度、step == 0,輸出整個字串

4、轉載幾種特殊的用法

提取最後N個字元:
>>> letter = 'abcdefghijklmnopqrstuvwxyz'
>>> letter[-3:]
'xyz'

從開頭到結尾,step為N:
>>> letter[::5]
'afkpuz'


將字串倒轉(reverse), 通過設定步長為負數:
>>> letter[::-1]
'zyxwvutsrqponmlkjihgfedcba'


如果自己手寫字串倒轉(reverse),根據反向從-1開始的情況,所以len(letter) - 1 ,因為正向畢竟是從0開始的,所以字串長度做end就夠了,而反向是從-1開始的,因為畢竟end是不包含自己的嘛
>>> letter[-1:-len(letter)- 1: -1]