python切片操作


序列類型是其元素被順序放置的一種數據結構類型,這種方式允許通過下標的方式來獲得某一個數據元素,或者通過指定下標范圍來獲得一組序列的元素。這種訪問序列的方式叫做切片。字符串也可以使用切片操作。切片操作符:[]  [:]  [::],調用內置函數slice()函數。

以字符串'abcdefg'為例:

s

a

b

c

d

e

f

g

index

0

1

2

3

4

5

6

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,否則返回空字符串。

 1 # 返回整個序列,即 'abcdefg'
 2 s
 3 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 s = 'abcdefg'
3 s[-2:-6:-1]

(1) starting_index = -2  ending_index = -6   step = -1

(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]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM