python中的列表(list) 切片詳解


1.切片:

    通過指定下標的方式來獲得某一個數據元素,或者通過指定下標范圍來獲得一組序列的元素,這種訪問序列的方式叫做切片。
    訪問某一個數據元素的的語法如下:
    sequence[index] sequence是序列名,index是想要訪問的元素對應的偏移量,偏移量可以是正值,范圍是:0<=index<=len(sequence)-1;

    也可以是負值,范圍是:-len(sequence)<=index<=-1
  

  序列訪問多個元素,只需給出開始和結束的索引值,並且用冒號分隔就可以了,其語法如下:
    sequence[starting_index:ending_index]
   通過這種方式我們可以得到從起始索引到結束索引(不包括結束索引對應的元素)之間的一"片"元素.起始索引和結束索引都是可選的,如果沒有提供或者用None 作為索引值,切片操作會從序列的最開始處開始,或者直到序列的最末尾結束。

li = [1,2,3,4,5,6,7]

print li[1:]           #輸出[2,3,4,5,6,7],省略終止索引,表示取起始索引之后的所有值,等效於li[1:len(li)]

print li[:3]           #輸出[1,2,3],省略起始索引,表示從0開始取,等效於li[0:3]

print li[:]            #輸出[1,2,3,4,5,6,7],省略起始索引、終止索引、步長值表示取全部,等效於li[0:len(li):1]

print li[::]           #輸出[1,2,3,4,5,6,7],省略起始索引、終止索引、步長值表示取全部,等效於li[0:len(li):1]

print li[::-1]        #輸出[7,6,5,4,3,2,1],省略起始索引、終止索引,步長值為-1,表示反向獲取

 

>>> a=[1,2,3,4,5,6,7] 
>>> a[len(a)-1] 
7 
>>> a[-len(a)] 
1 
>>> a[len(a)] 
  
Traceback (most recent call last): 
  File "<pyshell#98>", line 1, in <module> 
    a[len(a)] 
IndexError: list index out of range 
>>> a[-len(a)-1] 
  
Traceback (most recent call last): 
  File "<pyshell#99>", line 1, in <module> 
    a[-len(a)-1] 
IndexError: list index out of range 

 

其中a[len(a)-1]等同於a[-1],a[-len(a)]等同於a[0],分別表示序列的最后一個和第一個對象。

當使用冒號(:)對序列進行切片取值時,你所輸入的無論是start_index或者end_index,都不必局限於 -len(a) 和 len(a)-1 之間,因為只有當你輸入的索引號處於這個區間時才真正有效,而當你輸入的索引號超出這個范圍時,python會自動將start_index或end_index設定為缺省值(即第一個對象和最后一個對象)。如:

>>> a[-100:100] 
[1, 2, 3, 4, 5, 6, 7] 

 

[注意]一定要記住,end_index其實是你第一個不想要獲取的對象的索引,所以a[0:-1]是取不到a[-1]的,所以如果要使得切片片段包含end_index位置的對象,請缺省end_index,或者輸入一個超出end_index范圍的值。
利用步長對序列進行倒序取值
在切片運算中,步長為正,表示從左至右,按照索引值與起始位置索引之差可以被步長整除的規律取值;當步長為負,則表示從右至左,按照按照索引值與起始位置索引之差可以被步長整除的規律取值。
根據這個特性,我們可以很方便對某個序列進行倒序取值,這個方法比reverse方法更方便,且適用於沒有reverse方法的字符串和元組。

 

>>> a=[1,2,3,4,5,6,7] 
>>> b=(1,2,3,4,5,6,7) 
>>> c='Let me show you a little thing' 
>>> a[::-1] 
[7, 6, 5, 4, 3, 2, 1] 
>>> b[::-1] 
(7, 6, 5, 4, 3, 2, 1) 
>>> c[::-1] 
'gniht elttil a uoy wohs em teL' 
>>> a 
[1, 2, 3, 4, 5, 6, 7] 
>>> b 
(1, 2, 3, 4, 5, 6, 7) 
>>> c 
'Let me show you a little thing' 
  
>>> a.reverse() 
>>> a 
[7, 6, 5, 4, 3, 2, 1] 

 


免責聲明!

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



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