Python中的List,Tuple,Dic,Set

                                                          Python中的List,Tuple,Dic,Set數據結構

 List定義

序列是Python中最基本的數據結構。序列中的每一個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。app

列表是最經常使用的Python數據類型,它能夠做爲一個 方括號內的逗號分隔值出現。列表的數據項不須要具備相同的類型。建立一個列表,只要把逗號分隔的不一樣的數據項使用方括號括起來便可.
  
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]

 

 
 
  List切片
若是要取最後一位,怎麼辦?用 -1表示最後一個元素。相似的,倒數第二用 -2 表示,倒數第三用 -3 表示,倒數第四用 -4。
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']
 
  
 
 

元組  tuple

Python的元組與列表相似,不一樣之處在於元組的元素不能修改(後面會有個例子證實其也是「可變」的)。元組使用小括號,列表使用方括號。對象

元組建立很簡單,只須要在括號中添加元素,並使用逗號隔開便可。blog

    
 元組可使用下標索引來訪問元組中的值
 可使用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 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自己是可變的!

 

 

 

字典  Dic

dict的特色:用空間來換取時間的一種方法

dict的第一個特色是查找速度快,不管dict有10個元素仍是10萬個元素,查找速度都同樣。而list的查找速度隨着元素增長而逐漸降低。

不過dict的查找速度快不是沒有代價的,dict的缺點是佔用內存大,還會浪費不少內容,list正好相反,佔用內存小,可是查找速度慢。

因爲dict是按 key 查找,因此,在一個dict中,key不能重複。

dict的第二個特色就是存儲的key-value序對是沒有順序的!這和list不同.
dict的第三個特色是做爲 key 的元素必須不可變,Python的基本類型如字符串、整數、浮點數都是不可變的,均可以做爲 key。可是 list是可變的,就不能做爲 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

set能夠當作數學意義上的無序和無重複元素的集合.

set和dict相似,也是一組key的集合,但不存儲value。因爲key不能重複,因此,在set中,沒有重複的key

 

 

 

 感謝:廖學峯官網
         慕課網
         匯智網
相關文章
相關標籤/搜索