Python中的List,Tuple,Dic,Set數據結構
序列是Python中最基本的數據結構。序列中的每一個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。app
1 list=['du','dpsl',123,5926] 2 print list[2] 3 list[2]=321 4 print list 5 del list[0] 6 print list
其結果將是: spa
123 ['du', 'dpsl', 321, 5926] ['dpsl', 321, 5926]
1 list=['123','dudu','iiiu'] 2 print list 3 print list[-1] 4 print list[-2] 5 list.insert(0,'du') #增長元素 ,第一個參數表示增長到第一個位置上。pop()方法老是刪掉list的最後一個元素,而且它還返回這個元素。 6 print list
結果是:code
> ['123', 'dudu', 'iiiu'] iiiu dudu ['du', '123', 'dudu', 'iiiu']
Python的元組與列表相似,不一樣之處在於元組的元素不能修改(後面會有個例子證實其也是「可變」的)。元組使用小括號,列表使用方括號。對象
元組建立很簡單,只須要在括號中添加元素,並使用逗號隔開便可。blog
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 tup1 13 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 tup1 NameError: 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 t 3 L=t[2] #獲得元組中的索引爲2的元素,即其中的List。 4 L[0]='XX' #修改List中的第一個元素。 5 L[1]='YYY' #修改List中的第一個元素。 6 print t
看結果:get
> ('du', 'dudu', ['A', 'B']) ('du', 'dudu', ['XX', 'YYY'])
表面上看,tuple的元素確實變了,但其實變的不是 tuple 的元素,而是list的元素。 tuple一開始指向的list並無改爲別的list,因此,tuple所謂的「不變」是說,tuple的每一個元素,指向永遠不變。即指向'a',就不能改爲指向'b',指向一個list,就不能改爲指向其餘對象,但指向的這個list自己是可變的!
dict的第一個特色是查找速度快,不管dict有10個元素仍是10萬個元素,查找速度都同樣。而list的查找速度隨着元素增長而逐漸降低。
不過dict的查找速度快不是沒有代價的,dict的缺點是佔用內存大,還會浪費不少內容,list正好相反,佔用內存小,可是查找速度慢。
因爲dict是按 key 查找,因此,在一個dict中,key不能重複。
1 d = { 2 'sfg': 95, 3 'itor': 85, 4 'way': 59 5 } 6 for key in d: 7 print d[key]#經過key獲得value,與list有點類似,只是list是經過索引獲得值。 8 print key 9 print '========='
85 itor ========= 95 sfg ========= 59 way =========
set和dict相似,也是一組key的集合,但不存儲value。因爲key不能重複,因此,在set中,沒有重複的key