Python列表、元組、字典
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
註意:
每個鍵與值用冒號隔開(:),每對用逗號,每對用逗號分割,整體放在花括號中({})。
鍵必須獨一無二,但值則不必。
值可以取任何數據類型,但必須是不可變的,如字符串,數或元組。
字典的方法:
clear函數:清除字典中的所有項
copy函數:返回一個具有相同鍵值的新字典
fromkeys函數:使用給定的鍵建立新的字典,鍵默認對應的值為Non
get函數:訪問字典成員,get函數可以訪問字典中不存在的鍵,當該鍵不存在是返回None
has_key函數:檢查字典中是否含有給出的鍵
items和iteritems函數:items將所有的字典項以列表方式返回,列表中項來自(鍵,值),iteritems與items作用相似,但是返回的是一個叠代器對象而不是列表
keys和iterkeys:keys將字典中的鍵以列表形式返回,iterkeys返回鍵的叠代器
pop函數:刪除字典中對應的鍵
popitem函數:移出字典中的項
setdefault函數:類似於get方法,獲取與給定鍵相關聯的值,也可以在字典中不包含給定鍵的情況下設定相應的鍵值
update函數:用一個字典更新另外一個字典
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列表、元組、字典