天天看點

Python_序列對象内置方法詳解_String前言 軟體環境 序列類型 序列的操作方法字元串String最後

系統 

ubuntukylin 14.04

軟體 

python 2.7.3

ipython 4.0.0

序列類型,即由整數進行索引的對象的有序集合。其中又可以分為下面兩類: 

可變序列:清單,支援元素的插入、删除、替換 

不可變序列:元組、字元串

序列本質上是由索引對象來指向記憶體中的資料對象,是以序列資料對象都支援疊代方式,也都能夠支援下列幾種操作。

sequencename[x:y] ⇒ 切割出由索引x到y-1之間的元素。 

注意:索引均由0開始。而且序列的切片操作會傳回一個生成一個新的對象,不會讓原序列發生改變。

sequencename[x:y:stride] ⇒ 除了切割除x到y-1直接的元素,再對這些元素以stride-1的步進(間隔)進行挑選。 

擴充切片運算符能夠支援步進。即擷取下一個索引之間的間隔。

首先切割除第2到10個元素(空格也算一個),再每隔1個元素挑選一個元素。

序列的索引還可以是負數,-1指向序列的最後一個元素,以此類推。example:

還有下面兩種有趣的玩法: 

反轉序列

倒轉删除元素

删除了倒數第1到第2個元素。

連接配接操作符’ + ‘,可以将若幹個同類型的序列對象連接配接到一起。

如果使用連接配接操作符處理兩個不同類型的序列,會出現類型錯誤。

重複運算符’ * ‘,能夠讓被操作數重複的n次,并生成一個新的同類型序列。

注意:建議在學習一個方法之前,先使用help()函數來檢視方法的使用說明文檔,其中參數類型可能為iterable疊代器。iterable疊代器分為下面3類: 

1.所有的序列類型list、str、tuple。 

2.非序列類型dict、file。 

3.自定義的任何包含__iter__()或__getitem__()方法的類的對象。 

即函數參數中包含iterable,表示可以傳遞疊代器類型實參。

序列對象的長度,即序列對象元素的個數

将兩個序列對象索引相同的兩個元素結合成元組,以較短的程度為準。

enumerate(sequence[,start = 0])接收一個序列類型的參數,傳回由每一對索引号和元素組成的元組。可以指定索引的起始位置。

sorted(iterable, cmp=none, key=none, reverse=false) –> new sorted list 

iterable:待排序的對象 

cmp(x,y):指定一個定制的能夠比較兩個接收到的參數的函數,預設為none,即内建的比較函數。 

key(x):指定一個接收一個參數的函數,用作在每個元素中提取一個關鍵值作為比較值,預設為none比較每個元素。 

reverse:false為預設正序排列,true為逆序排列。 

注意:沒有__getitem__屬性的對象,如:int類型是不能調用key和cmp函數的。 

注意:在python中有許多内建的函數需要指定一個定制的函數,如:map()、filter()、reduce()、包括sorted等,這種時候使用lambda匿名函數将會非常的友善。 

排序效率:key 、reverse > cmp 。因為cmp函數進行多次的兩兩比較,而key、reverse對每個輸入記錄隻會被調用一次。 

key函數:以第二個關鍵字為比較值排序

cmp函數:以第二個關鍵字為比較值排序

reverse:逆序排列

若元素是string類型的化會轉換為ascii碼計算後再比較。

類似min()方法。

注意:sum()方法不支援元素為string或char類型的序列。

會觸發類型錯誤,不支援的運算數類型

全true則truw

注意:是以的空值序列對象都是false

有true則true

下面介紹适用于字元串的内建方法。

s.index(sub [,start [,end]]) -> int 在start-end的範圍内找到substring對應的索引号,再傳回一個int類型對象。

當在指定範圍内沒有查詢到substring時,會觸發<code>valueerror: substring not found</code>的錯誤。同時可以看出,string類型對象調用了其内建方法後仍是string類型。

s.join(iterable) -&gt; string 傳遞一個序列參數,會将string對象插入到序列的元素之間。即将序列的元素以string為分隔符連接配接起來,string對象可以為空。

s.replace(old, new[, count]) -&gt; string 

将string中的元素替換為指定的新元素,還可以指定替換的數量。

s.split([sep [,maxsplit]]) -&gt; list of strings 

輸入指定的分割符和分割次數兩個參數。

s.strip([chars]) -&gt; string or unicode 

将string兩端的chars去掉,并不能去掉string中間的substring

同樣是序列對象一份子的list類型,一樣有着非常多有意思的内置方法,我們下回再繼續學習。

轉載:http://blog.csdn.net/jmilk/article/details/49560837