剖析python切片「:」「::-1」「-1::」

剖析python切片[:][::-1][-1::]

我們在面試python相關職位時,總是會碰到一些面試python切片的試題,另外在解決某些問題時也經常會用到切片操作,因此勇哥在這裡給大家詳細介紹python的切片操作。如果你認為對你有價值的話,請在今日頭條上關注碼農阿勇,我們會持續推出高質量的文章和編程相關視頻。

一、切片能給我們帶來什麼價值

如果我們要獲取一個列表中的前N個元素,我們可能會用a[0],a[1],...a[n]或者用迭代特性去獲取這些元素。對於這種取指定索引範圍的操作,用上述方法顯然有點繁瑣,因此Python給我們提供了切片(Slice)操作符,能大大簡化這種操作。

二、切片基本操作


<code>切片操作的基本表達式為:object[start_index:end_index:step]/<code>
<code>start_index: 表示起始索引,從0開始,也可以是負數。/<code>
<code>step:步長,步長為正時,從左向右取值;步長為負時,反向取值,step不指定則默認為1。/<code>

這裡的 object可以是列表,元組,字符串等序列類型。object本身可以是一個序列常量值,也可以是一個序列變量。 下邊以操作列表這種序列為例展開講解。

1、 獲取列表單個值

訪問列表中的單個值,可以直接使用索引獲取,在python中,對於序列類型的索引支持正索引和負索引。負索引表示從序列類型的最後一個值的對應索引為-1,依次向左類推。

正負索引對應關係示意圖如下:

剖析python切片「:」「::-1」「-1::」

單元素訪問示例:

剖析python切片「:」「::-1」「-1::」

2、 切取整個列表

當不指定切片的起始索引,結束索引和步長的時候,則認為是切取整個列表。如果起始索引值定為0.其他不指定,也認為是切取整個列表。需要注意的是既是不指定起始索引和結束索引,但是其中間的冒號不能省略。

切取整個列表的常見形式如下例:

剖析python切片「:」「::-1」「-1::」

3、

切取列表部分片段

切取指定列表的某個片段時,其切片範圍為:大於等於起始索引 ,小於結束索引(也有人總結為 前包後不包規則)。

剖析python切片「:」「::-1」「-1::」

4、 切片表達式的第三個參數 步長(step)

步長可以是正整數,也可以是負正數,步長參數步指定則默認為1。使用見下例:

剖析python切片「:」「::-1」「-1::」

如果step為正整數時,切片是從左往右切。只有起始索引小於結束索引,才可以切取到值。如果切取不到返回空列表。見下例演示:

剖析python切片「:」「::-1」「-1::」

剖析python切片「:」「::-1」「-1::」

步長為負數時的例子:

剖析python切片「:」「::-1」「-1::」

5、 切片會生成一個新的序列

剖析python切片「:」「::-1」「-1::」

從該例上可以看到,對切片的結果賦值給b,對b進行操作並不會影響到原列表a。

總結:

1、對於切片操作,如果要切到有效的集合必須符合以下兩種規則:

1) 步長為正整數時,起始索引大於結束索引,是從左往右切。

2) 步長為負整數時,起始索引小於結束索引,是從右往左切。

2、不指定起始索引則認為是從0開始,不指定結束索引則認為是從最後一個元素對應索引的下一個索 引。

3、切片時,起始索引和結束索引不管你有沒有指定,它倆之間的冒號不能省略。

4、對一個序列類型切片,會生成一個新的序列類型,對新序列操作不會影響到原序列中的元素。

5、想系統學習python編程,可以購買我們的python付費專欄。視頻+配套資料+小項目構造場景+售後 支持帶你步步比別人領先。

剖析python切片「:」「::-1」「-1::」


分享到:


相關文章: