這裏總結一下Python中的內置數據結構(Built-in Data Structure):列表list、元組tuple、字典dict、集合set,涵蓋的僅有部分重點,詳細地去介紹每一個知識點並未涉及。python
列表中的每一個元素均可變的
意味着能夠對每一個元素進行修改和刪除數組
列表是有序的,每一個元素的位置是肯定的,能夠用索引去訪問每一個元素安全
>>> x = [1,2,3] >>> y = {'name':'Sakura'} >>> z="Test" >>> a=[x,y,z] >>> a [[1, 2, 3], {'name': 'Sakura'}, 'Test']
以爲Python中的list和C語言中的數組蠻像的,只是list中的元素類型能夠爲Python中的任意對象,C中的數組只能是同種類型。當訪問他們中的元素時,均可採用索引。這裏須要注意的是,list不只能夠向數組那樣正向索引也能夠反向索引。數據結構
list中有不少的方法,這裏僅介紹對list中元素進行增刪查改的方法。
app
利用正反索引對元素進行查找函數
對元素修改能夠直接賦值替換ui
列表中還有其餘方法如pop()刪除末尾元素,pop(i)刪除指定位置i的元素,append()向末尾添加元素code
能夠經過list將序列建立爲列表
Python中包含6中內建的序列:列表,元組,字符串、Unicode字符串、buffer對象和xrange對象。對象
>>> list("Hello,world") ['H', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']
其實list爲一種類型並不是函數,但此處兩者並沒有多大區別。下面的tuple、dict都如此。blog
>>> test=(1,2,3) >>> test (1, 2, 3) >>> test[1]=4 Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> test[1:1] = 4 Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> test[1] 2
從上可知,tuple不支持對元素的修改(包括刪除),tuple一初始化便固定下來了。
再來看一個例子。
>>> test=('a','b',['A','B']) >>> print(test) ('a', 'b', ['A', 'B']) >>> test[2][0]='x' >>> test[2][1]='y' >>> test ('a', 'b', ['x', 'y'])
這裏看似元素中的元素改變了,但是仔細分析下,元組中的第三個元素是一個列表。
代碼3.4行改變的是列表中的值,元組所指的這個元素列表並無改變,須要注意這點!
這就涉及到Python中的可變對象和不可變對象,像list這樣的就是可變對象,tuple即是不可變對象。
元組是固定的列表,那麼元組的意義何在呢?
由於tuple不可變,因此代碼更安全。若是可能,能用tuple代替list就儘可能用tuple
而且須要注意元組中元素的可變性!!
空的tuple能夠記爲(),若只有一個元素的tuple記爲(1,)
由於記爲(1)的話,這個實際表明的是數字1,此時()是數學公式中的小括號
由於元組是固定的列表,因此其內置的大多數的方法和列表是差很少的。
>>> tuple('Hello,world!') ('H', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd', '!')
字典這個概念就是基於現實生活中的字典原型,生活中的使用名稱-內容對數據進行構建,Python中使用鍵(key)-值(value)存儲,也就是C++中的map。
字典中的數據必須以鍵值對的形式出現
鍵不可重複,值可重複
鍵若重複字典中只會記該鍵對應的最後一個值
字典中鍵(key)是不可變的,爲不可變對象,不能進行修改;而值(value)是能夠修改的,能夠是任何對象。
在dict中是根據key來計算value的存儲位置,若是每次計算相同的key得出的結果不一樣,那dict內部就徹底混亂了。
>>> test={'Mon':1} >>> 'Fri' in test False >>> test.get('Fri') >>> test.get('Fri',-1) -1
對值得修改能夠採用直接覆蓋原值的方法
dict中的元素是無序的,不能夠採用分片。
可使用dict,經過其餘映射或者(鍵,值)對的序列創建字典。
>>> test=[('name','Sakura'),('age',20)] >>> d = dict(test) >>> d {'name': 'Sakura', 'age': 20}
dict也可使用關鍵字參數建立字典,也可用映射做爲dict參數,dict若不帶任何參數,將返回一個空字典
>>> d = dict(name='Sakura',age=20) >>> d {'name': 'Sakura', 'age': 20} >>> a=dict() >>> a {}
集合更接近數學上集合的概念。集合中每一個元素都是無序的、不重複的任意對象。
能夠經過集合去判斷數據的從屬關係,也能夠經過集合把數據結構中重複的元素減掉。集合可作集合運算,可添加和刪除元素。
建立集合時須要用list做爲輸入集合,可經過add()方法增長元素,remove()方法刪除元素
>>> test=set([1,2,3]) >>> test {1, 2, 3} >>> test.add(3) >>> test {1, 2, 3} >>> test.add(6) >>> test {1, 2, 3, 6} >>> test.remove(3) >>> test {1, 2, 6}
集合中重複的元素會被過濾掉
Python中的集合也能夠進行集合的之間的交、並等運算
>>> s1 = set([1,2]) >>> s2=set([2,3]) >>> s1 & s2 # s1與s2 {2} >>> s1 | s2 # s1與s2進行或運算 {1, 2, 3}