標籤:
學習Python中的List和Tuple
List定義
序列是Python中最基本的資料結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
列表是最常用的Python資料類型,它可以作為一個方括弧內的逗號分隔值出現。列表的資料項目不需要具有相同的類型。建立一個列表,只要把逗號分隔的不同的資料項目使用方括弧括起來即可.
1 list=[‘du‘,‘dpsl‘,123,5926]2 print list[2]3 list[2]=3214 print list5 del list[0] 6 print list
其結果將是:
123[‘du‘, ‘dpsl‘, 321, 5926][‘dpsl‘, 321, 5926]
List切片如果要取最後一位,怎麼辦?用-1表示最後一個元素。類似的,倒數第二用 -2 表示,倒數第三用 -3 表示,倒數第四用 -4。
1 list=[‘123‘,‘dudu‘,‘iiiu‘]2 print list3 print list[-1]4 print list[-2]5 list.insert(0,‘du‘) #增加元素 ,第一個參數表示增加到第一個位置上。pop()方法總是刪掉list的最後一個元素,並且它還返回這個元素。6 print list
結果是:
> [‘123‘, ‘dudu‘, ‘iiiu‘]iiiududu[‘du‘, ‘123‘, ‘dudu‘, ‘iiiu‘]
元組 tuple
Python的元組與列表類似,不同之處在於元組的元素不能修改(後面會有個例子證明其也是“可變”的)。元組使用小括弧,列表使用方括弧。
元組建立很簡單,只需要在括弧中添加元素,並使用逗號隔開即可。
元組可以使用下標索引來訪問元組中的值 可以使用del語句來刪除整個元組,但是不允許刪除元組中的元素。tuple沒有 append()方法,也沒有insert()和pop()方法。 元組中的元素值是不允許修改的,但我們可以對元組進行串連組合。比如:
1 tup1=(‘123‘,31) 2 print tup1 3 tup2=(‘dudu‘,‘du‘,123,321,‘zzz‘) 4 print tup2 5 tup3=tup1+tup2 6 print tup3 7 8 print "t2:",tup2[2:4] 9 10 print "======="11 12 del tup113 print tup1 #此時已經沒有tup1了。
其結果是:
> (‘123‘, 31)(‘dudu‘, ‘du‘, 123, 321, ‘zzz‘)(‘123‘, 31, ‘dudu‘, ‘du‘, 123, 321, ‘zzz‘)t2: (123, 321)=======> Traceback (most recent call last): File "/demo/test.py", line 19, in print tup1NameError: name ‘tup1‘ is not defined
一個特殊的地方:
因為()
既可以表示tuple,又可以作為括弧表示運算時的優先順序,結果 (1) 被Python解譯器計算出結果 1,導致我們得到的不是tuple,而是整數 1。
正是因為用()定義單元素的tuple有歧義,所以 Python 規定,單元素 tuple 要多加一個逗號“,”。
tup1=(121,)print tup1
> (121,)
上面寫到元組是不可變的。那麼,元組是真的不可變嗎?看例子:
1 t = (‘du‘, ‘dudu‘, [‘A‘, ‘B‘])2 print t3 L=t[2] #得到元組中的索引為2的元素,即其中的List。4 L[0]=‘XX‘ #修改List中的第一個元素。5 L[1]=‘YYY‘ #修改List中的第一個元素。6 print t
看結果:
> (‘du‘, ‘dudu‘, [‘A‘, ‘B‘])(‘du‘, ‘dudu‘, [‘XX‘, ‘YYY‘])
明明已經變了嘛,那麼解釋:
表面上看,tuple的元素確實變了,但其實變的不是 tuple 的元素,而是list的元素。tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向‘a‘,就不能改成指向‘b‘,指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!
感謝:廖學峰官網 慕課網 匯智網
學習Python中的List和Tuple