python學習2 列表和元組

2021-06-02 12:27:19 字數 3804 閱讀 8580

二列表和元組

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...