Python切片操作list,tuple,string,unicode,range

切片

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

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

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

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


定義一個list,利用 L[0],L[1],L[2]可以取前三個元素,面對多個元素我們會用循環。更簡單操作的方法,是切片(Slice).

例如:

L[0:3]表示從索引0開始,直到索引3爲止,但是不包括索引3,即索引0,1,2.

也可以從任意索引開始:L[1:2]     也可以試試:L[1:1]  會輸出[]

也支持倒數取數:注意,倒數第一個索引是-1   L[-2:]取出倒數兩個    L[-3:-2]取倒數第一個

如果省略start_index會從第一個元素開始,到end_index-1的元素爲止::L[:3]

如果省略end_index,會從起始索引開始,到最後一個元素爲止:L[3:]

如果省略start_indexend_indexstep,這樣就表示就表示切片整個序列,會複製出了一個新的序列

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

如果我們將步長設爲-1,那麼就可以很方便的得到一個反序的序列了


m = list(range(100))   #通過range函數創建一個0-99的數列,組成一個list賦值給m[0, 1, 2, 3, 4, 5, 6, ……,99]

m[:10]#取前十個數

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]



m[-10:]#取後十個數
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]


m[10:20]#取前11-20個數

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]


m[:10:2]#前十個數中,每2個數取一個

[0, 2, 4, 6, 8]


m[5:15:3]#第6-15個數中,每3個數取一個

[5, 8, 11, 14]


m[::10]#所有的數中,每10個數取一個

[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]


m[:]#什麼都不寫,可以原樣複製一個list

[0, 1, 2, 3, 4, 5, 6, 7,……,99]

tuple也支持切片特性,只是結果也是一個tuple:

n = (1,3,5,7)
n[:3]
(1, 3, 5)

字符串也支持切片,只是結果也是一個字符串。

'abcdefghjklmn'[::2]
'acegjln'

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

def trim(str):
   while str[:1]==' ':
            str = str[1:]
   while str[-1:] == ' ':
          str = str[:-2]
   return str
'abcdefghjklmn'[::2]
'acegjln'

發佈了148 篇原創文章 · 獲贊 113 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章