Python中的List,Tuple,Dic,Set
序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
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]
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']
Python的元組與列表類似,不同之處在于元組的元素不能修改(后面會有個例子證明其也是“可變”的)。元組使用小括號,列表使用方括號。
元組創建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。
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本身是可變的!
dict的第一個特點是查找速度快,無論dict有10個元素還是10萬個元素,查找速度都一樣。而list的查找速度隨著元素增加而逐漸下降。
不過dict的查找速度快不是沒有代價的,dict的缺點是占用內存大,還會浪費很多內容,list正好相反,占用內存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一個dict中,key不能重復。
1 d = {2 'sfg': 95,3 'itor': 85,4 'way': 595 }6 for key in d:7 print d[key]#通過key得到value,與list有點相似,只是list是通過索引得到值。8 print key9 print '========='
85itor=========95sfg=========59way=========
set和dict類似,也是一組key的集合,但不存儲value。由于key不能重復,所以,在set中,沒有重復的key
新聞熱點
疑難解答