1. 程式人生 > >Python列表、元組、字典

Python列表、元組、字典

列表、元組、字典

  1. Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中

的元素。


>>>classmates = [‘Michael‘,‘Bob‘,‘Tracy‘]

>>>classmates


用 len() 函數可以獲得 list 元素的個數:

>>>len(classmates)

用索引來訪問list 中每一個位置的元素,記得索引是從 0 開始的:

list 是一個可變的有序表,所以,可以往 list中追加元素到末尾,使用append函數

>>>classmates.append(‘Adam‘)

>>>classmates

也可以把元素插入到指定的位置,比如索引號為 1 的位置,使用insert函數:

>>>classmates.insert(1,‘Jack‘)

>>>classmates

要刪除list 末尾的元素,用 pop() 方法:

>>>classmates.pop()

>>>classmates

要刪除指定位置的元素,用 pop(i) 方法,其中 i 是索引位置,也可以使用remove()方法刪除:

>>>classmates.pop(1)

>>>classmates

>>>classmates.remove(‘Bob‘)

>>>classmates

要把某個元素替換成別的元素,可以直接賦值給對應的索引位置:

>>>classmates[1]=‘Sarah‘

>>>classmates

要給列表的元素進行排序可以使用sort()方法,倒序可以使用reverse()方法:

>>>classmates.sort()

>>>classmates

>>>classmates.reverse()

>>>classmates

list 裏面的元素的數據類型也可以不同,list 元素也可以是另一個list

>>>classmates = [‘Michael‘,‘Bob‘,[‘asp‘,‘php‘],‘Tracy‘]

>>>classmates

list中的元素就像隊列,我們可以使用切片的方法來存取它們的任意部分。[start:stop:step]即[開始索引:結束索引:步長值],註意:步長值不能為0。


2. 另一種有序列表叫元組:tuple。tuple和 list非常類似,但是 tuple 一旦初始化就不能修改

使用括號 () 可以表示 tuple。

tuple 所謂的“不變”是說,tuple 的每個元素,指向永遠不變。即指向 ‘a‘ ,就不能改成指向 ‘b‘ ,指向一個 list,就不能改成指向其他對象,但指向的這個list 本身是可變的!創建一個內容也不變的 tuple,就必須保證 tuple 的每一個元素本身也不能變。list 和tuple是Python內置的有序集合,一個可變,一個不可變。根據需要來選擇使用它們。

tuple 常用的兩個方法是:count()統計某個元組元素的個數和index()返回某個元素的下標。

註意:單個tuple元素的時候,元素後面要加‘,’,否則python解釋器不會識別成tuple類型。


3. Python 內置了字典:dict 的支持,dict全稱 dictionary,在其他語言中也稱為 map,使用鍵-值(key-value)存儲,具有極快的查找速度。字典由鍵和對應值成對組成。字典也被稱作關聯數組或哈希表。

字典的創建:

  • 直接創建字典

>>>d={‘one‘:1,‘two‘:2,‘three‘:3}

>>>print d

  • 通過dict創建字典或者通過關鍵字創建字典

>>>items=[(‘one‘,1),(‘two‘,2),(‘three‘,3),(‘four‘,4)]

>>>print u‘items中的內容:‘

>>>print items

>>>print u‘利用dict創建字典,輸出字典內容:‘

>>>d=dict(items)

>>>print d

註意:
每個鍵與值用冒號隔開(:),每對用逗號,每對用逗號分割,整體放在花括號中({})。
鍵必須獨一無二,但值則不必。
值可以取任何數據類型,但必須是不可變的,如字符串,數或元組。

字典的方法:

  1. clear函數:清除字典中的所有項

  2. copy函數:返回一個具有相同鍵值的新字典

  3. fromkeys函數:使用給定的鍵建立新的字典,鍵默認對應的值為Non

  4. get函數:訪問字典成員,get函數可以訪問字典中不存在的鍵,當該鍵不存在是返回None

  5. has_key函數:檢查字典中是否含有給出的鍵

  6. items和iteritems函數:items將所有的字典項以列表方式返回,列表中項來自(鍵,值),iteritems與items作用相似,但是返回的是一個叠代器對象而不是列表

  7. keys和iterkeys:keys將字典中的鍵以列表形式返回,iterkeys返回鍵的叠代器

  8. pop函數:刪除字典中對應的鍵

  9. popitem函數:移出字典中的項

  10. setdefault函數:類似於get方法,獲取與給定鍵相關聯的值,也可以在字典中不包含給定鍵的情況下設定相應的鍵值

  11. update函數:用一個字典更新另外一個字典

  12. values和itervalues函數:values以列表的形式返回字典中的值,itervalues返回值得叠代器,由於在字典中值不是唯一的,所以列表中可以包含重復的元素

把數據放入dict 的方法,除了初始化時指定外,還可以通過key放入:由於一個key 只能對應一個 value,所以,多次對一個 key放入 value,後面的值會把前面的值沖掉:1.要避免key 不存在的錯誤,有兩種辦法,一是通過 in 判斷 key是否存在:2.通過dict 提供的 get方法,如果 key不存在,可以返回 None,或者自己指定的value:

註意:dict 內部存放的順序和 key放入的順序是沒有關系的。

和list 比較,dict有以下幾個特點:

1. 查找和插入的速度極快,不會隨著 key 的增加而增加;

2. 需要占用大量的內存,內存浪費多。

而list 相反:

1. 查找和插入的時間隨著元素的增加而增加;

2. 占用空間小,浪費內存很少。

所以,dict 是用空間來換取時間的一種方法。

dict 可以用在需要高速查找的很多地方,在 Python代碼中幾乎無處不在,正確使用 dict非常重要,需要牢記的第一條就是dict 的key必須是不可變對象。

這是因為dict 根據 key來計算 value 的存儲位置,如果每次計算相同的 key 得出的結果不同,那dict 內部就完全混亂了。這個通過key計算位置的算法稱為哈希算法(Hash)。

要保證hash 的正確性,作為key 的對象就不能變。在Python中,字符串、整數等都是不可變的,因此,可以放心地作為key。而 list是可變的,就不能作為 key:set和 dict 類似,也是一組key的集合,但不存儲 value。由於 key 不能重復,所以,在 set中,沒有重復的key。

set和 dict 的唯一區別僅在於沒有存儲對應的 value,但是,set的原理和 dict一樣,所以,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等,也就無法保證 set內部“不會有重復元素”。


本文出自 “勇敢的心趙小白” 博客,請務必保留此出處http://3024783.blog.51cto.com/3014783/1975429

Python列表、元組、字典