1. 程式人生 > >python序列的三種類型:列表、元組、字典

python序列的三種類型:列表、元組、字典

python的資料結構主要就是序列,而列表、元組和字典三種類型比較容易混淆,特地做了個筆記記錄了一下,供大家學習:原文地址:http://www.rednat.com/archives/python-sequence-of-three-types-lists-tuples-dictionaries.html

列表:有序可變序列
 
建立:userlist = [1,2,3,4,5,6]
 
修改:userlist[5] = 999
 
新增:userlist.append(777)
 
刪除:userlist.remove(4) 或者 del(userlist[3])  pop方法:移除一個元素,預設為最後一個。 userlist.pop
(3)移除第三個元素,並且返回該值。   插入:userlist.insert(3,555)   排序:userlist.sort() 預設為升序 userlist.sort(reverse=True)使用降序 。或者使用sorted(userlist)進行排序   反轉:userlist.reverse()   查詢:userlist.index(3) 或者使用 in 保留字進行查詢   取元素:userlist[2]   取座標:userlist.index(999)   列表的連線: extend()方法。 或者使用 + 連線兩個列表。 兩者不同。

元組:有序不可變序列

建立:tuple1=
(1,2,3,4,5,6)   修改:值不能修改   新增:沒有append函式,只能通過賦值方式新增: tuple2=(tuple1,7,8,9)   刪除:(不可變序列無該屬性)   插入:(不可變序列無該屬性)   排序:只能使用sorted(userlist)進行排序   反轉:(不可變序列無該屬性)   查詢:userlist.index(3) 或者使用 in 保留字進行查詢   取元素:tuple1[4]   取座標:tuple1.index(3)   去重:set(tuple1)   解包:a,b,c,d,e,f = tuple1

字典:無序可變序列

建立:dict1=
{'a':'001','b':'002','c':'003','d':'004'} 或者使用函式建立字典:dict1 = dict([('a','001'),('b','002'),('c','003'),('d','004')])   修改:值不能修改   新增:直接賦值:dict1['f'] = '006' ; 或者使用setdefault()函式新增字典元素:dict1.setdefault('e','005'),當key已經存在時,則保持原有的k-v不變,當key不存在時,則新增該k-v。   刪除:字典無remove()函式,但可以del()函式刪除字典的kv:del(dict1['e'])。也可以使用pop()方法刪除指定的元素,由於字典是無序的,所以pop()不會預設刪除最後一個元素,必須要指定key   插入:字典是無index座標的,只有新增,沒有插入   排序:字典是無index座標的,所以也是無序的,只能通過key找到value。但可以通過其他方法排序: for k in sorted(dict1): print(k,dict1[k])   反轉:(無序不可反轉)   查詢:dict1['c'] 或者使用 in 保留字進行查詢。 或者使用items()方法將字典的每一對kv轉換為元組後進行便利查詢   取元素:dict1['c'] 或使用dict1.get('c')   取座標:key唯一,value不唯一,只能通過迴圈便利字典來找出   去重:key唯一,無需去重

字串–元組–列表–字典 的型別相互轉換

1、元組轉換為列表:list()
2、列表轉為為元組:tuple()
3、字典轉換為列表和元組: dict1.items()
4、列表元祖轉為為字典:dict()

問題1:為什麼會有元組的概念存在,而不能使用列表完全取代元組?

答案:

不可改變型別(元組、字元、數字、frozenset)的優點:
1、可雜湊–能夠用於字典的key或設定元素
2、在多執行緒情況下,比可變物件更安全

舉例說明:

1
2
3
4
5
6
7
8
9
10
11
12
tuple1 = (1,2,3)
dict1 = {'a':999,tuple1:777,'c':888}
print(dict1)
 
結果為:
{'a': 999, 'c': 888, (1, 2, 3): 777}
 
list1 = [1,2,3]
dict1 = {'a':999,list1:777,'c':888}
print(dict1)
 
結果報錯

問題2:怎麼判斷元組和列表都是有序序列,而字典是無序序列?

答案:

有序序列都有一個index()方法,並且可以用sorted對其元素值進行排序。二字典只能對其key進行排序,value沒有預設方法進行排序

tuple1.index()
list1.index()
sorted(tuple1)
sorted(list1)

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
tuple1 = (1,3,2)
print(sorted(tuple1))
 
list1 = [1,2,3]
print(sorted(list1))
 
dict1 = {1:2,3:4}
print(sorted(dict1))
 
結果為:
[1, 2, 3]
[1, 2, 3]
[1, 3]