自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python序列的切片操作與技巧

開(kāi)發(fā) 后端
序列(consequence)是python中一種數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)根據(jù)索引來(lái)獲取序列中的對(duì)象。

Python中含有六種內(nèi)建序列類(lèi):list, tuple, string, unicode, buffer, xrange。其中xrange比較特殊,它是一個(gè)生成器,其他幾個(gè)類(lèi)型具有的一些序列特性對(duì)它并不適合。

  1. >>> a = 'Iloveyou' 
  2. >>> len(a) 
  3. >>> max(a) 
  4. 'y' 
  5. >>> min(a) 
  6. 'I' 
  7. >>> bool('o' in a) 
  8. True 
  9. >>> a + a 
  10. 'IloveyouIloveyou' 
  11. >>> a*3 
  12. 'IloveyouIloveyouIloveyou' 
  13. >>> a[1:4] 
  14. 'lov' 
  15. >>> a.index('y') 
  16. >>> a[5] 
  17. 'y' 

一般說(shuō)來(lái),具有序列結(jié)構(gòu)的數(shù)據(jù)類(lèi)型都可以使用:index, len, max, min, in, +, *, 切片。如:

切片操作

對(duì)于具有序列結(jié)構(gòu)的數(shù)據(jù)來(lái)說(shuō),切片操作的方法是:consequence[start_index: end_index: step]。

start_index:表示是第一個(gè)元素對(duì)象,正索引位置默認(rèn)為0;負(fù)索引位置默認(rèn)為 -len(consequence)

end_index:表示是最后一個(gè)元素對(duì)象,正索引位置默認(rèn)為 len(consequence)-1;負(fù)索引位置默認(rèn)為 -1。

step:表示取值的步長(zhǎng),默認(rèn)為1,步長(zhǎng)值不能為0。

[注意]對(duì)于序列結(jié)構(gòu)數(shù)據(jù)來(lái)說(shuō),索引和步長(zhǎng)都具有正負(fù)兩個(gè)值,分別表示左右兩個(gè)方向取值。索引的正方向從左往右取值,起始位置為0;負(fù)方向從右往左取值,起始位置為-1。因此任意一個(gè)序列結(jié)構(gòu)數(shù)據(jù)的索引范圍為 -len(consequence) 到 len(consequence)-1 范圍內(nèi)的連續(xù)整數(shù)。

切片操作會(huì)將按照給定的索引和步長(zhǎng),截取序列中由連續(xù)的對(duì)象組成的片段,單個(gè)索引返回值可以視為只含有一個(gè)對(duì)象的連續(xù)片段。

切片的過(guò)程是從第一個(gè)想要的對(duì)象開(kāi)始,到第一個(gè)不想要的對(duì)象結(jié)束。第一個(gè)想要的對(duì)象到第一個(gè)不想要的對(duì)象之間的連續(xù)對(duì)象就是你所有想要的對(duì)象。

因此在consequence[start_index: end_index]中,切片中包含了consequence[start_index],但不包括consequence[end_index]。

切片的操作類(lèi)型:

con[start_index]:返回索引值為start_index的對(duì)象。start_index為 -len(con)到len(con)-1之間任意整數(shù)。

con[start_index: end_index]:返回索引值為start_index到end_index-1之間的連續(xù)對(duì)象。

con[start_index: end_index : step]:返回索引值為start_index到end_index-1之間,并且索引值與start_index之差可以被step整除的連續(xù)對(duì)象。

con[start_index: ]:缺省end_index,表示從start_index開(kāi)始到序列中最后一個(gè)對(duì)象。

con[: end_index]:缺省start_index,表示從序列中第一個(gè)對(duì)象到end_index-1之間的片段。

con[:]:缺省start_index和end_index,表示從第一個(gè)對(duì)象到最后一個(gè)對(duì)象的完整片段。

con[::step]:缺省start_index和end_index,表示對(duì)整個(gè)序列按照索引可以被step整除的規(guī)則取值。

在使用單索引對(duì)序列尋址取值時(shí),你所輸入的索引值必須是處于 -len(consequence) 到 len(consequence)-1 之間的值,否則會(huì)報(bào)錯(cuò)提示索引值超出范圍。如:

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

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

當(dāng)使用冒號(hào)(:)對(duì)序列進(jìn)行切片取值時(shí),你所輸入的無(wú)論是start_index或者end_index,都不必局限于 -len(a) 和 len(a)-1 之間,因?yàn)橹挥挟?dāng)你輸入的索引號(hào)處于這個(gè)區(qū)間時(shí)才真正有效,而當(dāng)你輸入的索引號(hào)超出這個(gè)范圍時(shí),python會(huì)自動(dòng)將start_index或end_index設(shè)定為缺省值(即第一個(gè)對(duì)象和最后一個(gè)對(duì)象)。如:

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

[注意]一定要記住,end_index其實(shí)是你第一個(gè)不想要獲取的對(duì)象的索引,所以a[0:-1]是取不到a[-1]的,所以如果要使得切片片段包含end_index位置的對(duì)象,請(qǐng)缺省end_index,或者輸入一個(gè)超出end_index范圍的值。

利用步長(zhǎng)對(duì)序列進(jìn)行倒序取值

在切片運(yùn)算中,步長(zhǎng)為正,表示從左至右,按照索引值與起始位置索引之差可以被步長(zhǎng)整除的規(guī)律取值;當(dāng)步長(zhǎng)為負(fù),則表示從右至左,按照按照索引值與起始位置索引之差可以被步長(zhǎng)整除的規(guī)律取值。

根據(jù)這個(gè)特性,我們可以很方便對(duì)某個(gè)序列進(jìn)行倒序取值,這個(gè)方法比reverse方法更方便,且適用于沒(méi)有reverse方法的字符串和元組。

  1.   
  2.   
  3. >>> a=[1,2,3,4,5,6,7] 
  4. >>> b=(1,2,3,4,5,6,7) 
  5. >>> c='Let me show you a little thing' 
  6. >>> a[::-1] 
  7. [7, 6, 5, 4, 3, 2, 1] 
  8. >>> b[::-1] 
  9. (7, 6, 5, 4, 3, 2, 1) 
  10. >>> c[::-1] 
  11. 'gniht elttil a uoy wohs em teL' 
  12. >>> a 
  13. [1, 2, 3, 4, 5, 6, 7] 
  14. >>> b 
  15. (1, 2, 3, 4, 5, 6, 7) 
  16. >>> c 
  17. 'Let me show you a little thing' 
  18.   
  19. >>> a.reverse() 
  20. >>> a 
  21. [7, 6, 5, 4, 3, 2, 1] 

相對(duì)reverse而言,切片的方法不會(huì)改變列表的結(jié)構(gòu),所以這是在實(shí)際應(yīng)用中比較有用的一個(gè)技巧。

原文鏈接:http://www.cnblogs.com/ifantastic/archive/2013/04/15/3021845.html

 

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2023-05-12 07:50:27

Golang切片數(shù)組

2023-01-05 16:36:55

2024-11-13 15:22:36

Python列表切片

2021-05-24 10:24:42

Golang字符串Python

2023-11-30 16:05:17

2019-11-20 12:03:42

Python數(shù)據(jù)爬蟲(chóng)

2010-03-03 16:57:28

Python字符

2010-03-03 10:45:09

Python字典

2010-02-24 17:41:05

WCF集合反序列化

2019-10-22 22:31:15

Python切片字符串

2010-03-03 13:12:56

Python圖像處理

2010-03-03 10:10:33

Python實(shí)現(xiàn)Soc

2021-07-13 06:44:04

Go語(yǔ)言數(shù)組

2023-11-28 11:44:54

Go切片

2023-12-13 13:49:52

Python序列化模塊

2022-07-06 14:16:19

Python數(shù)據(jù)函數(shù)

2010-03-05 15:07:35

Python優(yōu)化圖片

2010-03-04 10:50:45

windows ser

2010-01-06 11:17:52

2024-12-05 09:02:00

Pythonif?
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)