Python檔案袋(列表、元組、字典、集合 )
列表
可以同名,有序(通過下標可找到)
取值:
1 #宣告列表 2 listx=["L0","L1","L2",33,"L4"] 3 print(listx) #輸出:['L0', 'L1', 'L2', 33, 'L4'] 4 print(len(listx)) #統計總個數,輸出:5 5 print(listx[1]) #下標取值,輸出:L1 6 print(listx[0:2])#切片區間為:[0,2),輸出:['L0', 'L1'] 7 print(listx[:2])#輸出:['L0', 'L1'] 8 print(listx[-1])#倒數第一個,輸出:L4 9 print(listx.index("L1"))#查詢內容的下標,查詢到第一個,輸出:1 10 print(listx.count("L4")) #統計值為L4的個數 輸出:1
遍歷:
1 #宣告列表 2 listx=["L0",[11,22,33],"L1"] 3 4 print(type(listx))#輸出型別為:<class 'list'> 5 6 for i in listx: 7print(i) #輸出:L0[11, 22, 33]L1
修改:
1 #宣告列表 2 listx=["L0","L1","L1"] 3 4 listx[2]="L1.1" #修改值 5 listx.append("L2") #追加,結尾新增 6 listx.insert(1,"L1.0") #插入,引數(位置,內容) 7 8 listx.reverse()#反轉 9 listx.sort()#排序 10 11 print(listx) #輸出:['L0', 'L1', 'L1.0', 'L1.1', 'L2']
刪除:
1 #宣告列表 2 listx=["L0","L1","L2",33,"L4"] 3 listx.remove("L2") #刪除,以內容 4 del listx[0] #刪除,以下標 5 listx.pop(0) #刪除,以下標,預設刪除最後一個 6 7 #listx.clear() #清空列表 8 print(listx) #輸出:[33, 'L4']
利用for迴圈的列表生成:
#生成列表,for迴圈的值傳遞到前面的算式進行值的修改 listx=[i*10 for i in range(10)] print(listx)#輸出:[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
列表排序:
#排序 listx=[20,100,66,99,11] print(sorted(listx)) #排序,輸出:[11, 20, 66, 99, 100]
列表合併:
list1=[11,22] list2=[99,88] list1.extend(list2) #擴充套件 print(list1) #輸出:[11, 22, 99, 88]
列表的一一對應:
1 #一 一對應 2 list1=[11,22,33,88] 3 list2=["cc","bb","aa","dd"] 4 res=zip(list1,list2)#變成一個迭代器 5 print(next(res)) #輸出:(11, 'cc')
字串與列表的轉換:
函式eval()可以將格式化的字串轉換為列表、字典等資料型別
1 a="[11,33,55]" 2 3 #轉換函式 4 aa=eval(a) 5 print(aa[2]) #輸出:55 6 7 #進列表轉換為字串 8 print(type(str(a))) #輸出:<class 'str'>
淺copy,只copy第一層:
1 #宣告列表 2 listx=["L0",[11,22,33],"L1"] 3 4 list2=listx.copy()#淺copy,只copy第一層 5 6 list2[0]="L0000" #只改自己 7 list2[1][2]=3333333333 #一改全改 8 9 print(listx)#輸出:['L0', [11, 22, 3333333333], 'L1'] 10 print(list2)#輸出:['L0000', [11, 22, 3333333333], 'L1']
深copy,獨立分配記憶體空間
1 import copy 2 3 #宣告列表 4 listx=["L0",[11,22,33],"L1"] 5 6 list2=copy.deepcopy(listx)#深copy,獨立分配記憶體空間 7 8 list2[0]="L0000" #只改自己 9 list2[1][2]=3333333333 #只改自己 10 11 print(listx)#輸出:['L0', [11, 22, 33], 'L1'] 12 print(list2)#輸出:['L0000', [11, 22, 3333333333], 'L1']
元組:
值不可更改,值可重複,有序(通過下標可找到)
1 #宣告元組 2 va=("dongxiaodong","東小東","222","dong","dong",("11",22,33)) 3 4 print(type(va))#型別,輸出:<class 'tuple'> 5 6 print(len(va)) #總個數,輸出:6 7 8 print(va.count("dong")) #統計某個值的個數 輸出:2 9 10 print(va.index("dong")) #查詢值的下標 輸出:3 11 12 print(va[1]) #下標取值,輸出:東小東
字典:
無序,鍵不可重複
1 #建立字典方法1 2 va={"v1":"111","v2":"222",33:"333"} 3 4 #建立字典方法2 5 va2=dict.fromkeys(["v1","v2",33],"xxxxx") #建立不同的鍵對應一個值 6 print(va2) #輸出:{'v1': 'xxxxx', 'v2': 'xxxxx', 33: 'xxxxx'} 7 8 9 print(va[33]) #通過鍵取值,不存在則報錯 10 print(va.get(44)) #存在則返回值,不存在則返回None 11 12 print("v1" in va) #判斷鍵是否存在字典中 13 14 va["v1"]="1x1x1x1" #修改 15 16 va["v3"]="xxxx333333" #新增 17 18 va.update({"v1":"vvvvv11111","v4":"444444"}) #鍵存在則更新值,鍵不存在則建立 19 20 print(va.items()) #輸出:dict_items([('v1', 'vvvvv11111'), ('v2', '222'), (33, '333'), ('v3', 'xxxx333333'), ('v4', '444444')]) 21 22 23 24 #del va["v2"] #刪除某對 25 #va.pop("v3") #刪除某對 26 27 #va.popitem() #隨機刪除一對,預設刪除最後一對 28 29 #del va #刪除所有 30 31 print(va) #列印所有 32 33 34 #字典迴圈列印方法1 35 #效率較高,推薦 36 #迴圈鍵 37 for i in va: 38print(i,va[i]) 39 40 #字典迴圈列印方法2 41 #迴圈鍵值 42 for k,v in va.items(): 43print(k,v)
字典的排序
1 #排序 2 a={"5":55555,"2":88888,"32":22222} 3 4 #按鍵排序,鍵的資料型別必須一樣 5 #輸出:[('2', 88888), ('32', 222222), ('5', 55555)] 6 print(sorted(a.items())) 7 8 #按值排序,值的資料型別必須一樣 9 #輸出:[('32', 22222), ('5', 55555), ('2', 88888)] 10 print(sorted(a.items(),key=lambda x:x[1]))
集合
值不可重複,重複則保留其中一個,無序,因為集合是無序的,所以取值一般都是經過for迴圈,而不會使用下標取值
1 listx1=set(["10",10,11,12,12]) 2 print(listx1) #輸出:{10, 11, 12, '10'} 3 4 listx2=set([10,100]) 5 6 #交集 7 #方法1: 8 print(listx1.intersection(listx2)) #輸出:{10} 9 #方法2: 10 print(listx1 & listx2)#輸出:{10} 11 12 #並集 13 #符號為:| 14 print(listx1.union(listx2)) #輸出:{100, 10, 11, 12, '10'} 15 16 #差集 17 #符號為: - 18 # 在listx1中有,但listx2中沒有的,引數可有對換 19 print(listx1.difference(listx2)) #{11, 12, '10'} 20 21 #子集 22 #listx2w是不是listx1的子集,返回bool 23 print(listx2.issubset(listx1)) #輸出:False 24 25 #父集 26 #listx1是不是listx2的父集,返回bool 27 print(listx1.issuperset(listx2)) #輸出:False 28 29 #對稱差集 30 #在並集的基礎上將兩個集合都有的元素去掉 31 print(listx2 ^ listx1) #輸出:{100, 11, 12, '10'} 32 33 listx2.add("dongxiaodong") #新增一項 34 listx2.update(["dong1","dong2"]) #新增多項 35 36 listx2.remove("dong1") #刪除一項,不存在會報錯 37 listx2.discard("dong1")#刪除一項,不存在會返回None 38 39 print(len(listx2)) #列印長度 40 41 print(listx2)