成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python序列的切片操作與技巧

開發 后端
序列(consequence)是python中一種數據結構,這種數據結構根據索引來獲取序列中的對象。

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

  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' 

一般說來,具有序列結構的數據類型都可以使用:index, len, max, min, in, +, *, 切片。如:

切片操作

對于具有序列結構的數據來說,切片操作的方法是:consequence[start_index: end_index: step]。

start_index:表示是第一個元素對象,正索引位置默認為0;負索引位置默認為 -len(consequence)

end_index:表示是最后一個元素對象,正索引位置默認為 len(consequence)-1;負索引位置默認為 -1。

step:表示取值的步長,默認為1,步長值不能為0。

[注意]對于序列結構數據來說,索引和步長都具有正負兩個值,分別表示左右兩個方向取值。索引的正方向從左往右取值,起始位置為0;負方向從右往左取值,起始位置為-1。因此任意一個序列結構數據的索引范圍為 -len(consequence) 到 len(consequence)-1 范圍內的連續整數。

切片操作會將按照給定的索引和步長,截取序列中由連續的對象組成的片段,單個索引返回值可以視為只含有一個對象的連續片段。

切片的過程是從第一個想要的對象開始,到第一個不想要的對象結束。第一個想要的對象到第一個不想要的對象之間的連續對象就是你所有想要的對象。

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

切片的操作類型:

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

con[start_index: end_index]:返回索引值為start_index到end_index-1之間的連續對象。

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

con[start_index: ]:缺省end_index,表示從start_index開始到序列中最后一個對象。

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

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

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

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

  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],分別表示序列的最后一個和第一個對象。

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

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

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

利用步長對序列進行倒序取值

在切片運算中,步長為正,表示從左至右,按照索引值與起始位置索引之差可以被步長整除的規律取值;當步長為負,則表示從右至左,按照按照索引值與起始位置索引之差可以被步長整除的規律取值。

根據這個特性,我們可以很方便對某個序列進行倒序取值,這個方法比reverse方法更方便,且適用于沒有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] 

相對reverse而言,切片的方法不會改變列表的結構,所以這是在實際應用中比較有用的一個技巧。

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

 

責任編輯:彭凡 來源: 博客園
相關推薦

2023-05-12 07:50:27

Golang切片數組

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數據爬蟲

2010-03-03 16:57:28

Python字符

2010-03-03 10:45:09

Python字典

2010-02-24 17:41:05

WCF集合反序列化

2010-03-03 13:12:56

Python圖像處理

2010-03-03 10:10:33

Python實現Soc

2021-07-13 06:44:04

Go語言數組

2023-11-28 11:44:54

Go切片

2019-10-22 22:31:15

Python切片字符串

2010-01-06 11:17:52

2010-11-15 11:08:51

上司

2024-12-05 09:02:00

Pythonif?

2010-03-04 10:50:45

windows ser

2010-03-05 15:07:35

Python優化圖片

2023-12-13 13:49:52

Python序列化模塊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产亚洲欧美在线 | 精品一区二区三区在线观看 | 日韩视频国产 | 99精品欧美一区二区蜜桃免费 | 国产精品一区网站 | 亚洲一区中文字幕 | 日韩一区二区免费视频 | 人人九九精 | a亚洲精品 | 亚洲人成人一区二区在线观看 | 久久久精品 | 999视频 | 91传媒在线观看 | 亚洲一区二区三区免费在线观看 | 欧美性视频在线播放 | 手机av网 | www.黄色网| 久久久久久国产精品免费免费狐狸 | 欧美日韩高清 | www.国产视频 | 国产精品久久久久久久免费观看 | 在线免费毛片 | 99reav | 一区二区三区小视频 | 久久久久久久国产精品影院 | 盗摄精品av一区二区三区 | 国产一区二区高清在线 | 久久精品国产99国产精品亚洲 | 久久99精品视频 | 中文字幕亚洲视频 | 国产精品高潮呻吟久久av野狼 | 亚洲精品久久久久久一区二区 | 国产欧美在线一区二区 | 91xxx在线观看| 色吊丝2288sds中文字幕 | 成人在线视频网 | 成人av播放 | 操操日| 91日b| 欧美激情精品久久久久久变态 | 伊人久久综合 |