python學習2--列表和元組

二列表和元組 
2.1 序列 
python中最基本的數據結構是序列。 
python有6種內建序列:列表、元組、字符串、unicode字符串、buffer對象和xrange對象。 
列表和元組的主要區別:列表能夠修改,元組不能夠修改; 

通用的序列操做:索引、分片、加、乘、檢查某個元素是否屬於序列的成員、計算序列長度、計算最大 

元素和計算最小元素。 

2.1.1 索引 
序列中的元素是從索引0開始; 

但是使用負數做爲索引,-1表示最後一個元素; 

若是一個函數返回一個序列,能夠直接對返回結果進行索引操做: 
如:fourth = raw_input("Year: ")[3] =>當輸入2011後,fourth的值爲1; 

2.1.2 分片 
使用分片,訪問必定範圍內的元素。分片經過冒號相隔的兩個索引實現。 
如:myname = ‘caiyuanwei’ 
myname[3:7] =》‘yuan’   //輸出索引值爲3到索引值7前面的元素 
[前索引:後索引)-----》從前索引開始到後索引以前結束,不包括後索引的元素。!!!!! 

分片的技巧: 
獲取最後元素:myname[-3:]  =》'wei' 
獲取最前元素: myname[:3] =》 ‘cai’ 
顯示所有:       myname[:] =》 ‘caiyuanwei’ 
注意若是分片中第一個索引比第二個索引在序列中晚出現,則會返回空序列。 

分片的步長: 
默認步長爲1;若是更改步長則在兩個索引後用冒號分隔:如[前索引:後索引:步長] 
如:mynumber = [1,2,3,4,5,6,7,8,9,10] 
mynumber[::4] =》 [1,5,9]//步長爲4,隔3個元素輸出第四個元素 

步長技巧: 
步長不能爲0!!!!!! 
步長能夠爲負數,負數步長表明倒序輸出!!! 
如:mynumber[8:3:-1] =》 [9,8,7,6,5]//從第8個元素倒序到第4個元素 
mynumber[0:10:-2] =》 []//0比10在序列中更早出現,因此無輸出 
mynumber[::-2] =》 [10,8,6,4,2]//倒序輸出 
mynumber[5::-2] =》[6,4,2] 
mynumber[:5:-2] =》[10,8] 

2.1.3 相加 
兩種相同類型的序列能夠進行相加操做,不相同的類型不能相加,如:字符串和列表,雖然都是序列, 

可是不能相加。 

2.1.4 相乘 
對序列進行乘法操做,會生成新序列,將原序列複製x次。 

2.1.5 None、空列表和初始化 
None是python的內建值,表示爲空(相似於c的null) 
若是想創建一個長度必定的空列表能夠:[None]*n 

2.1.6 成員資格 
判斷一個值是否在序列中,使用in運算符,若是存在返回True,不然返回False 
如:myname = ‘caiyuanwei’ 
‘yu’ in myname  =》True 

2.1.7 長度、最小值和最大值 
取序列長度len(); 
取序列中最大值max(); 
取序列中最小值min(); 

2.2 列表 
2.2.1列表建立 
list(‘Hello’);//list函數用於建立一個列表,能夠由其它類型序列建立,如例子中由字符串建立列表。 

2.2.2列表操做 
2.2.2.1列表元素賦值 
用索引能夠改變該索引所在的列表元素的值。不能給不存在的元素賦值。 

2.2.2.2列表元素刪除 
使用del操做符能夠刪除列表中某個索引的元素。 
如:test = list('1234567')  =》['1','2','3','4','5','6','7'] 
test[1] = 3 =>['1','3','3','4','5','6','7'] 
del test[1] => ['1','3','4','5','6','7'] //列表長度在元素刪除後回減少 

也可刪除片:del test[2:5] =》 ['1','2'] 

2.2.2.3分片賦值 
test = list('12345678'); 
test[1:4] = []; =》['1','5','6','7','8']//替換空元素,實現刪除 

test[1:1] = list('234'); =》['1','2','3','4','5','6','7','8']//使用相同的索引位置,能夠在該位置實現插入 

test[1:] = list('abc'); =》['1','a','b','c']//從某個索引位置開始替換到結尾 

test[:] = list('ffff') = 》['f','f','f','f'] 

2.2.2.4列表方法 
python中方法的概念:方法是與對象有緊密聯繫的函數。 
方法的調用方式:對象.方法(參數) 
列表的方法:(1)append用於列表尾追加元素。append方法直接修改原列表而不是返回一個新列表。 

(多是python中方法和函數的區別) 
(2)count方法用於統計某個元素出現測次數。 
(3)extend方法用於在列表尾追加另外一個列表(擴展)。list1.extend(list2),修改list1,list2不變。 
        extend看起來像鏈接(+)操做,可是鏈接只會生成新的列表副本,而不會改變原有兩個列表。 
用鏈接實現擴展(extend):a= a+b,雖然能夠實現可是沒有extend方法效率高。 
用分片替換實現擴展(extend):a[len(a):] = b;能夠實現可是可讀性很差。 
(4)index方法用於找出第一個與給定值匹配的元素的索引位置。若是沒有該值則異常。 
(5)insert方法用於向列表中插入對象。對象.insert(插入位置,插入值);也能夠用分片賦值實現插入。 
(6)pop方法用於刪除列表中某一元素。默認刪除最後一個元素。該方法返回被刪除的元素的值。 
        pop是惟一一個既能修改列表又返回元素值的列表方法。 
        默認的append和pop方法結合使用能夠實現棧的操做(LIFO) 
        使用insert(0,...)和pop方法能夠實現隊列的操做(FIFO) 
(7)remove用於移除列表中的某個值的第一個匹配項。remove是一個沒有返回值的原位置改變方法, 

它修改列表可是沒有返回值。 
(8)reverse方法將列表中的方法反向存儲。 
(9)sort方法用於在原位置對列表排序,原位置意味着改變列表而不是返回列表副本。(升序排列) 
        注意sort沒有返回值,若是當遇到想對某列表進行排序,可是又不想改變原列表的狀況下,則須要 

以下操做: 
    y = x[:];//將列表x複製給y   注意若是隻簡單的用y = x,實際上y和x仍是指向的同一個對象! 
    y.sort(); 
        sorted函數能夠生成一個列表的副本,sorted是函數不是方法,它能夠用於任何序列,但返回值都 

爲列表。 
        高級排序: 
        sort方法參數:1.能夠指定排序比較函數,lst.sort(cmp); 
        2.能夠給每一個元素建立鍵,按照鍵排序,lst.sort(key = len); 
        3.能夠指定是否反向排序,lst.sort(reverse = True); 

 

2.3 元組
元組值不能改變,元組沒有方法,由於不能改變。即便元組只有一個值也要用‘,’分開!!
42 不是元組,(42)也不是元組,(42,)纔是元組。
3*(40+2)  =》126
3*(40+2,) =》(42,42,42)

2.3.1 tuple函數:將一個序列轉換爲元組
2.3.2 元組不可替代的緣由:
    1.元組能夠在映射中看成鍵使用,但列表不能夠。
    2.元組做爲不少內建函數和方法的返回值存在。 python

相關文章
相關標籤/搜索