python切片

本篇將介紹Python的切片操作,切片支持的數據類型有列表、字符串、元祖,更多內容請參考:Python學習指南

切片是什么?

切片操作符是序列名后跟一個方括號,方括號中有一對可選的數字,并用冒號分隔。注意這與你使用的索引操作符十分相似。記住數是可選的,而冒號是必須的。切片分隔符中的第一個數(冒號之前)表示序列開始的下標,第二個數(冒號之后)表示切片結束的下標,第三個數(冒號之后)表示切片間隔數。如果不指定第一個數,Python就從序列首開始。如果沒有指定第二個數,則Python會停止在序列尾。注意,返回的序列從開始位置開始 ,剛好在 結束 位置之前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外。這樣,shoplist[1:3]返回從位置1開始,包括位置2,但是停止在位置3的一個序列切片,因此返回一個含有兩個項目的切片。shoplist[:]返回整個序列的拷貝。shoplist[::3]返回位置3,位置6,位置9...的序列切片。也可以用負數做切片,負數用在從序列尾開始計算的位置。例如,shoplist[::-1]會返回倒序序列切片。

切片的操作

取一個list或tuple的部分元素時非常常見的操作。比如,一個list如下:

>>>L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
#取前三個元素
>>>L[0:3]
['Michael', 'Sarch', 'Tracy']

如果第一個索引是0,還可以省略

L[:3]
['Michael', 'Sarch', 'Tracy']

#從索引1開始,取出2個元素
>>>L[1:3]
['Sarch', 'Tracy']

類似的,既然Python支持L[-1]取倒數第一個元素,那么它同樣支持倒數切片,試試:

>>>[-2:]
['Bob', 'Jack']
>>>L[-2:-1]
['Bob']

記住,倒數第一個元素的索引是-1
切片操作十分有用,我們先創建一個0-99的數列:

>>>L = list(range(100))
>>>L
[0,1,2,3,4,...,99]

可以通過切片輕松取出某一段數列。比如前10個數:

>>>L[:10]
[0,1,2,3,4,5,6,7,8,9]
#后10個數
>>>L[-10:]
[90,91,92,93,94,95,96,97,98,99]
#前11-20個數
>>>[10:20]
[10,11,12,13,14,15,16,17,18,19]
#前10個數,每2個取一個:
>>>L[:10:2]
[0,2,4,6,8]
#所有數,每5個取一個:
>>>L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
#什么都不寫,只寫[:]就可以原樣復制一個list
>>>L[:]
[0,1,2,3,...,99]

tuple

tuple也是一種list,唯一區別是tuple不可變。因此,tuple也可以用切片操作,只是操作的結果仍是tuple:

>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)

字符串

字符串'xxx'也可以看成是一種list,每個元素就是一個字符。因此,字符串也可以用切片操作,只是操作結果仍是字符串:

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'

在很多編程語言中,針對字符串提供了很多各種截取函數(例如,substring),其實目的就是對字符串切片。Python沒有針對字符串的截取函數,只需要切片一個操作就可以完成,非常簡單。

參考

  1. 廖雪峰-切片
  2. Python列表切片詳解
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 切片操作符是序列名后跟一個方括號,方括號中有一對可選的數字,并用冒號分割。注意這與你使用的索引操作符十分相似。記住...
    編程技術閱讀 327評論 0 0
  • 最近在慕課網學習廖雪峰老師的Python進階課程,做筆記總結一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,736評論 0 5
  • 一、python 變量和數據類型 1.整數 Python可以處理任意大小的整數,當然包括負整數,在Python程序...
    績重KF閱讀 1,780評論 0 1
  • 本教程基于Python 3,參考 A Byte of Python v1.92(for Python 3.0) 以...
    yuhuan121閱讀 3,111評論 1 6
  • 初生的你,像個小牛犢, 毛發濃密,黝黑修長, 你如約來光顧, 是我們一輩子最貴的禮物! 你第三天會翻身; 第一百天...
    雙木林兮閱讀 221評論 0 0