List和Tuple類(lèi)型
1.Python創(chuàng)建List
>>> ['Michael', 'Bob', 'Tracy']
['Michael', 'Bob', 'Tracy']
由于Python是動(dòng)態(tài)語(yǔ)言,所以list中包含的元素并不要求都必須是同一種數(shù)據(jù)類(lèi)型礁鲁,我們完全可以在list中包含各種數(shù)據(jù):
>>> L = ['Michael', 100, True]
一個(gè)元素也沒(méi)有的list,就是空l(shuí)ist:
>>> empty_list = []
2.按照索引訪問(wèn)List
>>> L = ['Adam', 'Lisa', 'Bart']
按照索引訪問(wèn)為
>>> print L[0]
Adam
>>> print L[1]
Lisa
>>> print L[2]
Bart
3.倒序訪問(wèn)list
>>> L = ['Adam', 'Lisa', 'Bart']
Bart同學(xué)是最后一名赁豆,俗稱(chēng)倒數(shù)第一仅醇,所以,我們可以用 -1 這個(gè)索引來(lái)表示最后一個(gè)元素魔种,同理:
>>> print L[-1]
Bart
>>> print L[-2]
Lisa
>>> print L[-3]
Adam
使用倒序索引時(shí)着憨,也要注意不要越界。
4.List添加新元素
追加到末尾
>>> L = ['Adam', 'Lisa', 'Bart']
>>> L.append('Paul')
>>> print L
['Adam', 'Lisa', 'Bart', 'Paul']
插入到任何位置, 例如第3個(gè)位置
>>> L = ['Adam', 'Lisa', 'Bart']
>>> L.insert(2, 'Paul')
>>> print L
['Adam', 'Lisa', 'Paul', 'Bart']
5.List刪除元素
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> L.pop()
'Paul'
>>> print L
['Adam', 'Lisa', 'Bart']
要把Paul踢出list务嫡,我們就必須先定位Paul的位置甲抖。由于Paul的索引是2漆改,因此,用 pop(2)把Paul刪掉:
>>> L.pop(2)
'Paul'
>>> print L
['Adam', 'Lisa', 'Bart']
6.List替換元素
>>> L[2] = 'Paul'
>>> print L
L = ['Adam', 'Lisa', 'Paul']
對(duì)list中的某一個(gè)索引賦值准谚,就可以直接用新的元素替換掉原來(lái)的元素挫剑,list包含的元素個(gè)數(shù)保持不變。
由于Bart還可以用 -1 做索引柱衔,因此樊破,下面的代碼也可以完成同樣的替換工作:
>>> L[-1] = 'Paul'
7.Python之創(chuàng)建tuple
tuple是另一種有序的列表,中文翻譯為“ 元組 ”唆铐。tuple 和 list 非常類(lèi)似哲戚,但是,tuple一旦創(chuàng)建完畢艾岂,就不能修改了顺少。
>>> t = ('Adam', 'Lisa', 'Bart')
創(chuàng)建tuple和創(chuàng)建list唯一不同之處是用( )替代了[ ]。
現(xiàn)在王浴,這個(gè) t 就不能改變了脆炎,tuple沒(méi)有 append()方法,也沒(méi)有insert()和pop()方法氓辣。
8.Python之創(chuàng)建單元素tuple
tuple和list一樣秒裕,可以包含 0 個(gè)、1個(gè)和任意多個(gè)元素钞啸。
包含多個(gè)元素的 tuple几蜻,前面我們已經(jīng)創(chuàng)建過(guò)了。
包含 0 個(gè)元素的 tuple体斩,也就是空tuple入蛆,直接用 ()表示:
>>> t = ()
>>> print t
()
創(chuàng)建包含1個(gè)元素的 tuple 呢?來(lái)試試:
>>> t = (1)
>>> print t
1
好像哪里不對(duì)!t 不是 tuple ,而是整數(shù)1窘俺。為什么呢赌髓?
因?yàn)?)既可以表示tuple,又可以作為括號(hào)表示運(yùn)算時(shí)的優(yōu)先級(jí),結(jié)果 (1) 被Python解釋器計(jì)算出結(jié)果 1,導(dǎo)致我們得到的不是tuple,而是整數(shù) 1话浇。
正是因?yàn)橛?)定義單元素的tuple有歧義,所以 Python 規(guī)定闹究,單元素 tuple 要多加一個(gè)逗號(hào)“,”幔崖,這樣就避免了歧義:
>>> t = (1,)
>>> print t
(1,)
Python在打印單元素tuple時(shí),也自動(dòng)添加了一個(gè)“,”,為了更明確地告訴你這是一個(gè)tuple赏寇。
多元素 tuple 加不加這個(gè)額外的“,”效果是一樣的:
>>> t = (1, 2, 3,)
>>> print t
(1, 2, 3)
9.可變的“tuple”
前面我們看到了tuple一旦創(chuàng)建就不能修改〖郏現(xiàn)在,我們來(lái)看一個(gè)“可變”的tuple:
>>> t = ('a', 'b', ['A', 'B'])
注意到 t 有 3 個(gè)元素:'a'嗅定,'b'和一個(gè)list:['A', 'B']自娩。list作為一個(gè)整體是tuple的第3個(gè)元素。list對(duì)象可以通過(guò) t[2] 拿到:
>>> L = t[2]
然后渠退,我們把list的兩個(gè)元素改一改:
>>> L[0] = 'X'
>>> L[1] = 'Y'
再看看tuple的內(nèi)容:
>>> print t
('a', 'b', ['X', 'Y'])
我們先看看定義的時(shí)候tuple包含的3個(gè)元素:
當(dāng)我們把list的元素'A'和'B'修改為'X'和'Y'后忙迁,tuple變?yōu)椋?br>
表面上看,tuple的元素確實(shí)變了碎乃,但其實(shí)變的不是 tuple 的元素姊扔,而是list的元素。
tuple一開(kāi)始指向的list并沒(méi)有改成別的list梅誓,所以恰梢,tuple所謂的“不變”是說(shuō),tuple的每個(gè)元素证九,指向永遠(yuǎn)不變删豺。即指向'a'共虑,就不能改成指向'b'愧怜,指向一個(gè)list,就不能改成指向其他對(duì)象妈拌,但指向的這個(gè)list本身是可變的拥坛!
理解了“指向不變”后,要?jiǎng)?chuàng)建一個(gè)內(nèi)容也不變的tuple怎么做尘分?那就必須保證tuple的每一個(gè)元素本身也不能變猜惋。例如:
t = ('a', 'b', ('A', 'B'))