二列表和元組
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中方法的概念:方法是與物件有緊密聯絡的函式。
方法的呼叫方式:物件.方法(引數)
(可能是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是唯一乙個既能修改列表又返回元素值的列表方法。
使用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學習筆記 2 列表和元組
第二章 列表和元組 序列中,每個元素都有個乙個序號,序號以0開始,最後乙個元素序號為 1,倒數第二個 2 序列型別包括,列表,元組,字串,unicode字串,buffer,xrange 列表可以修改,元組不可以修改,元組可以作為字典的key,列表不可以 列表中的元素可以是各種型別,各元素通過逗號分隔...
2,列表和元組
資料結構,以某種方式組合起來的資料元素的集合。python最基本的資料結構為序列,序列中每個元素都有編號,即其位置或索引。python中常用的三種序列 列表 元組 字串。注 列表可以修改,元組 字串不可修改,列表 元組中的元素是多樣的。注 列表以 標識 元組以 標識 字串以雙引號標識。通用序列操作 ...
Python的學習之路(2) 列表和元組
參考自 列表是python裡最常用的資料型別之一,通過列表可以對資料實現最方便的儲存 修改等操作 通過如下方式定義乙個列表 emp list list 定義乙個空列表 通過下標訪問列表中的元素,下標從0開始計數,還可以用負數倒著取 1 切片 即從中取多個元素 names alex tenglan e...