python之切片


切片

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

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

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

  • python3支持切片操作的數據類型有listtuplestringunicoderange
  • 切片返回的結果類型與原對象類型一致
  • 切片不會改變原對象,而是重新生成了一個新的對象

下面列表為列:

                                                 圖列一

一個簡單的例子:

alist=['A','B','C','D','E','F']
①alist[0:4:1]
②alist[0:4] 結果:[
'A', 'B', 'C', 'D'] ①和②結果一樣,因為步長有默認值為1 alist[0:4:2] 結果:['A', 'C']

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

alist[:4]  
['A', 'B', 'C', 'D']   

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

alist[2:]
['C', 'D', 'E', 'F']

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

 alist[:]
['A', 'B', 'C', 'D', 'E', 'F']

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

alist[::2]
['A', 'C', 'E']

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

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

下面這四種表達式是等價的:

alist[0:4]
['A', 'B', 'C', 'D']
alist[0:-2]
['A', 'B', 'C', 'D']
alist[-6:4]
['A', 'B', 'C', 'D']
alist[-6:-2]
['A', 'B', 'C', 'D']

觀察圖列一就可以得出,區間一致。

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

alist[0:4:-1]
[]
alist[3:0:2]
[]

利用切片功能,編寫一個函數trim(str),類似Python中的strip()功能——去除字符串首尾的空格:

>>> def trim(str):
...     while str[:1]==' ':
...             str = str[1:]
...     while str[-1:] == ' ':
...             str = str[:-2]
...     return str
...
>>> trim('  abc  hh  welcome!      ')
'abc  hh  welcome!'

 

路漫漫其修遠兮,吾將上下而求索。


免責聲明!

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



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