廣告
| 切片(Slice) |
|
|
|
| 作者是 Victor | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 週三, 11 二月 2009 21:09 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
什麼是切片不管是字串、還是List,在Python裡只要是符合"序列"概念的物件,都可以使用"切片"(slice)的方式去存取,至於為什麼叫切片呢? 想像一下字串是一條香腸,你要取其中的一段,就像在切片一樣,你要從頭到尾,還是從頭到中間,又或著中間取一段呢? 這就是所謂的切片的概念,以下讓我們介紹字串切片的使用方法:
接下來我們看第二個,通常也是最常用的方式,例如字串是s = 'abcd' s[0:2] 的結果就是'ab' s[1:2] 就是'b',和 s[1] 的效果一樣,而 s[2:4] 也就是'cd',除了這樣的規則之外,如果起始為0的話,可以省略0不寫,換言之,省略不寫第一個,就會被當成從0開始,例如 s[0:2] 可以省略成 s[:2] 前面的數字被省略了,Python就知道前面是0,而終止的數字如果是字串的長度,也一樣可以省略不寫,換言之終止的數字省略不寫就會被設為字串的長度,例如 s[2:4] 可以省略為 s[2:] 除了這些,還有和上面一樣的負數規則,就是負數代表是從右邊數過來的第幾個,例如 s[:-1] 結果是'abc',而 s[-2:-1] 就是'c',效果和 s[-2] 是一樣的。 最後是第三種形式,規則都和上面一樣,只是加了k步取一個字的規則,例如s = 'abcd' s[::1] 的結果是'abcd',因為是從頭到尾的切片,而且隔一步取一個,所以有和沒有是一樣的,但是 s[::2] 就不一樣了,兩步才取一個字,所以是'ac',而比較複雜的是,步數也有負數的規則,如果步數是負的,表是從i到j以負數前進,例如 s[::-1] 結果會是dcba,除此之外,對於負的步數而言,起始省略會變成字串的最後一個字元開始,而終止省略的話,會變成字串的第一個字元,因此 s[::-1] 可以寫成 s[3::-1]為什麼不寫 這樣呢? s[3:0:-1] 因為終止條件不包括在被取到的字在內,只有省略才能表示,如果寫成這樣會變成'dcb',因為不包括0,但是比0前面的字元如果用負數表示卻又變成了從後 面數過來,因此只能用省略來表示負步數的第一個字元之前當結尾,這個部份有點難懂,但是知道s[::-1]可以將字串反過來就好,因為這個部份比較少用 到。 字串abcd用表格表示:
接下來我們示範字串切片的使用: # -*- coding: utf-8 -*- string = u"中文字測試" # 印出前三個字 print string[:3] # 印出中間三個字 print string[1:4] # 印出最後一個字 print string[-1] # 跳一個字印 print string[::2] # 倒過來印 print string[::-1] 可改變的序列使用切片什麼是可改變,什麼是不可改變,在這裡我們還不打算說明,將在後面的章節解釋,在這裡請先記得,字串是不可改變的序列,而List是可改變的序列,以上的方法都可以應用在可改變和不可改變的序列,換言之,你也可以應用上面的方法在List,而不只有在字串上,以下我們介紹針對可改變的序列的切片操作。
|
核心是 Joomla!. Designed by: Free Joomla Theme, whois protect. Valid XHTML and CSS.


