[a:b:c],其中a是startindex,b是endindex,c是步長,負責控制方向,c正值為從左到右,startindex應該在endindex左邊,否則返回空字串或空列表,空元組.c為負值方向從右到左,a仍然是startindex,應該在endindex的右邊,否則返回空字串或空列表,空元組.
序列型別是其元素被順序放置的一種資料結構型別,這種方式允許通過下標的方式來獲得某乙個資料元素,或者通過指定下標範圍來獲得一組序列的元素。這種訪問序列的方式叫做切片。字串也可以使用切片操作。切片操作符: [:] [::],呼叫內建函式slice()函式。
以字串'abcdefg'為例:sa
bcde
fgindex
index
-7-6
-5-4
-3-2-1
一、sequence[index]
類似於其他語言的陣列操作。sequence是序列的名字,index是想要訪問的元素對應的偏移量。偏移量正負都可以,-len(sequence)<=index<=len(sequence)-1。正索引以序列的開始為起點,負索引以序列的結束為起點。
試圖訪問乙個越界的索引會引發乙個indexerror異常。
二、sequence[starting_index:ending_index]
通過這種方式可以得到從起始索引到結束索引(不包括結束索引所對應的元素)之間的元素,起始索引和結束索引都是可選的,如果沒有提供或者用none作為索引值,切片操作會從序列的最開始處開始,或者直到序列的最末尾結束。其中,開始和結束的索引值可以超出字串長度,如:s[-100:100],返回'abcdefg'.
用乙個:時,starting_index應該小於ending_index,否則返回空字串。步長為負數時,方向從右往左,starting_index應該在ending_index右邊,否則返回空字串
1 # 返回整個序列,即 'abcdefg'
2 s3 s[:]
4 5 # 返回 'abc'
6 s[0:3]
7 s[:3]
8 9 # 返回 'cde'
10 s[2:5]
11 s[:5]
12 13 # 返回 'def'
14 s[-4:-1]
三、sequence[starting_index:ending_index:step]擴充套件切片操作,step為步長引數,類似range()裡的步長引數。
得到的序列從starting_index(包含starting_index)開始,每次以步長前進,即starting_index + step,直到ending_index結束。
執行:
1 # 返回 'fedc'
(2) 第乙個讀sequence[-2],即 'f',第二個讀starting_index + step,即 -2+(-1)=-3,sequence[-3],也就是 'e'。
(3) 按這個順序繼續讀,不包括ending_index,即'b',所以s[-2:-6:-1]返回 'fedc'。
同理,輸出s[2:5:2],返回 'ce'。
有乙個經常用到的應用:翻轉字串
# 輸出 'gfedcba'
1 s =s'abcdefg'
2 print s[::-1]
python 切片操作
在說切片之前,我們不得不先說一下什麼是序列。序列 python中的一種資料結構,這種資料結構根據索引來獲取序列中的物件。在以後比較常見的資料結構中,列表 字典 字串都是序列。形式 slice start index end index step 一般情況下,步長是不寫的用預設值1,形式 slice ...
python切片操作
切片操作 切片是pytho序列及其重要的操作,適用於列表,元組,字串等,切片格式如下 切片slice操作可以讓我們快速提取子列表或修改,標準格式為 其實偏移量start 終止偏移量 end 步長 step 注意 當步長省略受順便可以省略第二個冒號 典型操作 三個量為正數的情況 如下 a 10,20,...
python 切片操作
a python b a 1 意味著翻轉 print b nohtyp c a 2 print c nhy 從後往前數的話,最後乙個位置為 1 d a 1 從位置0到位置 1之前的數 print d pytho e a 2 從位置0到位置 2之前的數 print e pytha 0,1,2,3,4,...