系統
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) -> string 傳遞一個序列參數,會将string對象插入到序列的元素之間。即将序列的元素以string為分隔符連接配接起來,string對象可以為空。
s.replace(old, new[, count]) -> string
将string中的元素替換為指定的新元素,還可以指定替換的數量。
s.split([sep [,maxsplit]]) -> list of strings
輸入指定的分割符和分割次數兩個參數。
s.strip([chars]) -> string or unicode
将string兩端的chars去掉,并不能去掉string中間的substring
同樣是序列對象一份子的list類型,一樣有着非常多有意思的内置方法,我們下回再繼續學習。
轉載:http://blog.csdn.net/jmilk/article/details/49560837