使用 list 和 tuple
list
- 列表,Python內(nèi)置的一種數(shù)據(jù)類型奇颠,是一種有序的集合,可隨時添加刪除其中的元素。
- 表示: classmates = ['Michael', 'Bob', 'Tracy']
- 內(nèi)部元素可以多種類型赦役,例如:L=['Apple',123,True,'['Michael', 'Bob', 'Tracy']']
這里的 L 可以相當(dāng)于:['Apple',123,True,classmates]
要拿到 L 中的 'Bob' ,可以 L[3] [1],如同二維數(shù)組 - 空列表栅炒,N=[]
相關(guān)操作:
len() 函數(shù) 獲取元素個數(shù):
len(classmates),結(jié)果為 3;
len(L),注意結(jié)果是4
len(N),結(jié)果為0使用 索引 訪問每一個位置的元素:
classmates[0],得到 Michael掂摔;
classmates[1],得到 Bob;
classmates[2],得到 Tracy赢赊;
最后元素的索引值是: len(classmates)-1負數(shù)索引
classmates[-1]乙漓,可以得到最后的元素,Tracy,依次類推-2,-3释移,但別越界叭披,否則報錯。修改列表元素
1. append( ) 追加到列表末尾:
classmates.append('Adam') ==> ['Michael', 'Bob', 'Tracy','Adam']
2. insert( ) 插入到指定位置:
索引1處玩讳, classmates.insert(1, 'Jack') ==>['Michael', 'Jack','Bob', 'Tracy','Adam']
3. pop( ) 刪除列表末尾的元素:
classmates.pop() ==> ['Michael', 'Jack','Bob', 'Tracy']
4. pop(i) 刪除指定 i 索引位置上的元素:
classmates.pop(1) ==> ['Michael','Bob', 'Tracy']
5. 索引替換 賦值替換對應(yīng)索引值上的元素:
classmates.[1] = 'Sarah' ==> ['Michael','Sarah', 'Tracy']
tuple
- 元組涩蜘,一種有序列表,與 list 相似熏纯,但是一旦初始化就無法修改同诫,但正因為這樣,所以更安全
- 表示: classmates = ('Michael', 'Bob', 'Tracy')
- 沒有上述修改元素的方法樟澜,可以使用索引误窖,但同樣不能賦值代替元素
-
注意定義時候,tuple 的元素就必須被確定下來:
t=(1,2) - 空元組: t=()
陷阱:
定義一個只有一個元素的元組往扔,如果這么定義: t=(1)
那么贩猎,恭喜,定義的不是 tuple萍膛,而是 1 這個數(shù)吭服。因為 () 既可以表示元組,也可以表示數(shù)學(xué)公式中的小括號蝗罗。這就是產(chǎn)生歧義艇棕,Python 在這種情況會按照小括號進行計算蝌戒,計算的結(jié)果自然是 1。
正確做法:加個小逗號以消除歧義
t=(1,)
可變的tuple?
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
其實沼琉,tuple所說的不可變指的是“指向性不可變”北苟,如下圖所示:
而將('a', 'b', ['A', 'B'])改為('a', 'b', ['X', 'Y'])后:
很顯然,如果要做個真正不可變的元組打瘪,很簡單友鼻,保證其元素也不可變即可。