Python3基礎10——切片(str和list)


切片的語法表達式為:[start_index : end_index : step]

start_index表示起始索引,end_index表示結束索引,step表示步長,步長不能為0,且默認值為1

切片操作是指按照步長,截取從起始索引到結束索引,但不包含結束索引(也就是結束索引減1)的所有元素。

python也提供slice函數實現切片對象,主要用在切片操作函數里的參數傳遞:[slice(start, stop, step)]

切片不會改變原對象,而是重新生成了一個新的對象

 1 >>> C = ['A','B','C','D','E','F']
 2 >>> C[0:4:1]         # list的切片
 3 ['A', 'B', 'C', 'D']
 4 >>> C[slice(1,4,1)]  # 切片函數slice()
 5 ['B', 'C', 'D']
 6 >>> C = "ABCDEF"
 7 >>> C[0:4:1]         # str的切片(同list)
 8 "ABCD"
 9 >>> C[slice(1,5,2)]
10 "BD"

省略start_index,保留end_index,這樣會從第一個元素開始,切到end_index - 1的元素為止

1 >>> C[:5]
2 ['A', 'B', 'C', 'D', 'E']

保留start_index,但省略end_index,這樣會從起始索引開始,切到最后一個元素為止:

1 >>> C[2:]
2 ['C', 'D', 'E', 'F']

省略start_indexend_indexstep,這樣就表示就表示切片整個序列,也就是復制出了一個新的序列:

1 >>> C[:]
2 ['A', 'B', 'C', 'D', 'E', 'F']

省略start_indexend_index,但保留step,表示對整個序列,按照步長整除的規則取值:

1 >>> C[::2]
2 ['A', 'C', 'E']

此時,如果我們將步長設為-1,那么就可以很方便的得到一個反序的序列了:

1 >>> C[::-1]
2 ['F', 'E', 'D', 'C', 'B', 'A']

只要起始值start_index到結束值end_index在step方向中間有值,就有返回值:

 1 C = ['A','B','C','D','E','F']
 2 # 下面這四種表達式是等價的:
 3 >>> C[0:3]
 4 ['A', 'B', 'C']
 5 >>> C[0:-3]
 6 ['A', 'B', 'C']
 7 >>> C[-6:3]
 8 ['A', 'B', 'C']
 9 >>> C[-6:-3]
10 ['A', 'B', 'C']

解釋:c[0:-3]等價於c[A:D:1],c[-6:3]等價於c[0:3:1]

切片時,一定要保證start_indexend_index的方向與步長step的方向同向,否則會切出空的序列:

1 >>> C[0:3:-1]
2 []
3 >>> C[3:0:1]
4 []




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM