Python序列的切片操作
序列(consequence)是 python 中一種數據結構,這種數據結構根據索引來獲取序列中的對象。
一般說來,具有序列結構的數據類型都可以使用:index, len, max, min, in, +, *, 切片。如:
a="abcdefg"
print(len(a))#7
print(max(a))#g
print(min(a))#a
print(a+a)#abcdefgabcdefg
print(a*3)#abcdefgabcdefgabcdefg
print(a[2:5])#cde
print(a.index("c"))#2
print(a[4])#e
切片
對於具有序列結構的數據來說,切片操作的方法是:consequence[start_index: end_index: step]
- start_index: 表示的是第一個元素對象,如果不寫的話,默認就是0,即爲起始位置。正索引位置默認爲0;負索引位置默認爲 -len(consequence)
- end_index: 表示的是最後一個元素對象,默認就是取到末尾。正索引位置默認爲 len(consequence)-1;負索引位置默認爲 -1。
- step: 表示步長,默認爲1,步長不能爲0。
對於序列結構數據來說,索引和步長都具有正負兩個值,分別表示左右兩個方向取值。索引的正方向從左往右取值,起始位置爲0;負方向從右往左取值,起始位置爲-1。
簡單的說,切片就是從你第一個想要的對象開始,到你第一個不想要的對象結束。(也就是說它是一個左閉右開的區間,一步走幾個對象由你設置的步長決定)
常用場景
#con[start_index]
print(a[3]) #d(取下標爲3的元素)
#con[start_index:]
print(a[3:]) #defg(從下標爲3取到結尾,步長默認1)
#con[: end_index]
print(a[:3]) #abc(默認起始位置爲0,也就是從開始取到下標爲3,不包括下標爲3的元素)
#con[:]
print(a[:]) #abcdefg(全缺省就是取開始到結尾的整個片段)
#con[start_index: end_index]
print(a[2:5]) #cde(從下標爲2,取到下標爲5,但是不包括下標爲5)
#con[start_index: end_index : step]
print(a[1::2]) #bdf(從下標爲1開始,取到結尾,步長爲2)
#con[::step]
print(a[::2]) #aceg(正序取,步長爲2)
需要注意一哈~千萬不能越界嘍
!!!以下三行代碼是錯誤示範!是錯誤示範!:
list1=[1,2,3,4,5,6]
print(len(list1)) #6,list1的長度是6
print(list1[len(list1)]) #這裏會報錯,越界訪問(IndexError: list index out of range)
用切片逆置序列
用切片逆置序列非常的簡單方便,一行python就可以搞定啦!
#用切片逆置序列
a="abcdefg"
b=[1,2,3,4,5,6]
c=(11,22,33,44,55,66)
print(a[::-1])
print(b[::-1])
print(c[::-1])
#如果是list的話,用reverse也可以逆置
b.reverse()
print(b)
這兩種方法用切片會好一些,因爲切片不會修改序列結構。