前言
一、切片的2種索引方向
二、切片的操作方式
三、一些基本操作
1、切取單個對象
2、切取整個列表
3、步長step正負值 決定索引方向的一些案例
四、進階操作
1.修改某個元素值
2.替換元素值
3、插入元素值
4、選擇切片位置
總結
文章參考自:link.
前言最近學習python切片,時而醍醐灌頂時而雲裡霧裡,今天終於弄清楚了 python切片 裡面自己經常疑惑的地方,記錄一下,方便以後查看。
一、切片的2種索引方向如果掌握切片方法,就能對所有目標值進行隨意切取,然鵝可切片的目標對象有2種索引方向:正索引、負索引。如下圖所示,
以 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]舉例:
這個字符串 a 的正索引是由左往右,頭下標是0,尾下標是9;
它的負索引是由右往左,頭下標是-1,尾下標是-10.
二、切片的操作方式要想成功完成切片,那麼需要包含2個 ‘ :’符號,以及3個參數,分別是start_index、end_index、step,一個完整的切片表達式如下所示:
切片操作基本表達式:object[start_index : end_index : step]
1、開始索引 start_index :表示的是開始切片的位置,並且切片結果包含該索引下的值;
2、終止索引 end_index: 表示的結束切片的位置,並且切片結果不包含該索引下的值;
3、步長step :表示切取的步長值,可正可負,step為正時,索引方向為正方向,step為負時,索引方向為負方向,當step值省略時,默認取值為1。
切記:步長正負決定切片方向,非常重要!!
當未寫start_index、end_index的值時,都默認,從索引的端點處開始
三、一些基本操作以下舉例對象都是列表 a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1、切取單個對象切取索引為3的位置所對應的值:
2、切取整個列表不填寫值的時候,從端點處開始
3、步長step正負值 決定索引方向的一些案例step=1,由左向右,包含start_index =1索引本身包括的值,不包括終止索引end_index =5本身包含的值。
// An highlighted block>>> a [1: 5: ][1, 2, 3, 4]>>> # 步長step = 1,默認值,由左往右正索引方向
step = -1,由右向左,依舊不包含終止索引=5本身所包含的值
// An highlighted block>>> a [ : 5 :-1][9, 8, 7, 6]>>> # 步長step= -1,負索引,起始索引沒寫,表示從端點開始由右往左,終止索引是5
索引方向相互矛盾,值為空
// An highlighted block>>> a [7 : 2 ][]>>> # 這是因為起始索引為7終止索引為2,方向是由右往左,>但是步長step默認是1,表示正索引,由左往右,兩者方向矛盾值為空
索引值為負的情況,一切以step值正負為准,決定索引方向!
// An highlighted block>>> a [ -6 : :][4, 5, 6, 7, 8, 9]>>> #起始於 start_index = -6,步長為1,由左向右
根據前面所學,切片結果包含起始索引位置的值,但不包含終止索引位置的值,這種情況指的是給定了具體的終止索引,如下:
// An highlighted block>>> #給了明確的終止索引位置,那結果就不包含終止索引本身的值如下不包含end_index = 5位置上的值>>> a [ : 5 : -1 ][9, 8, 7, 6]
這個案列是包含了終止索引位置的值,參照上條加入對比。
也就是說,指定了具體的終止索引位置,那麼取值不包括這個位置上的值,如果沒指定,默認終止索引就在端點處,那麼取值包括該位置的值
// An highlighted block>>> a [ 5: : -1][5, 4, 3, 2, 1, 0]>>> #沒有指定具體的終止索引位置,所以默認終止於端點處,因此包含端點處的值,即0
四、進階操作1.修改某個元素值直接將修改後的值帶入進索引裡面
// An highlighted block>>> a [ 2 ] = [ 'A' ]>>> print (a)[0, 1, ['A'], 3, 4, 5, 6, 7, 8, 9] #直接在需要修改的索引處賦值,將索引值 = 2的值修改為['A']
2.替換元素值是從起始索引開始,包含起始索引本身的值,將數值插入,然後再將終止索引本身及以後的值,緊跟在插入數值後面就行了,不包含終止索引本身。下面以替代索引3和5之間的元素為案例分析
包含 “起始索引=3 ”的元素本身,不包含”終止索引 = 5“的元素本身,元素個數應該是2個。
(1)給定替換的元素個數 = 2
// An highlighted block>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print (a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a [ 3: 5] = [ 'b', 'c']>>> print (a)[0, 1, 2, 'b', 'c', 5, 6, 7, 8, 9]>>> #替代寫法,將起始索引本身的值到終止索引前一個索引之間的值進行替換,>終止索引本身的數值不替換
(2)給定替換的元素個數 > 2個
// An highlighted block>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print (a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a [ 3: 5 ] = [ 'b', 'c', 'd', 'e']>>> print (a)[0, 1, 2, 'b', 'c', 'd', 'e', 5, 6, 7, 8, 9]>>> #插入寫法,從開始索引為3的地方帶入插入值,帶入插入數值後,將索引值為5的值本身及其後面的值緊跟著排列在後就行
(3)給定替換的元素個數 < 2。
// An highlighted block>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print (a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a [ 3: 5 ] = [ 'b' ]>>> print (a)[0, 1, 2, 'b', 5, 6, 7, 8, 9]>>> # 替換了起始索引 = 3本身的值,>終止索引=5及其以後的值都緊跟在插入值後面,>索引=4處的值伴隨著索引 = 3的值一起被替換掉了
3、插入元素值切片這裡,最困惑的就是沒理解替換元素值、和插入元素值兩者的區別,現在恍然大悟,替換的原理如上所述,接下來插入元素值其實很簡單,只要保持,終止索引、起始索引是同一個值再進行賦值就可以了
(1)插入一個元素
// An highlighted block>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print (a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a [6:6 ] = ['c', 'd', 'e', 'f','g']>>> print (a)[0, 1, 2, 3, 4, 'b', 'c', 'd', 'e', 'f', 'g', 5, 6, 7, 8, 9]>>> #插入多個元素,其他原本的元素值和個數都不發生改變
(2)插入多個元素,甚至字符串
// An highlighted block>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print (a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a [ 3: 3] = [ 'hello , world!']>>> print (a)[0, 1, 2, 'hello , world!', 3, 4, 5, 6, 7, 8, 9]
4、選擇切片位置(1)取索引值為偶數的位置進行切片
// An highlighted block>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print(a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a [ : : 2][0, 2, 4, 6, 8]>>> # 選取索引值為偶數的位置進行切片
(2)選取索引值為奇數的位置進行切片
// An highlighted block>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print(a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a [ 1: :2][1, 3, 5, 7, 9]>>> # 選取索引值為奇數的位置進行切片
綜上,就是今天學習python切片的小結,記錄完成!
總結到此這篇關於python切片操作方法的文章就介紹到這了,更多相關python切片操作方法內容請搜索軟件開發網以前的文章或繼續浏覽下面的相關文章希望大家以後多多支持軟件開發網!