tuple(元組)功能: 不可變,但是元組內數組可以修改(不建議) 可迭代 格式 your_tuple=("name1","name2",1,……) 拆包 a,b,c=your_tuple 或者 a,*b=your_tuple(a取值第一個,剩餘賦值給b) a=your_tuple[i](只獲取第i ...
tuple(元組)功能:
不可變,但是元組內數組可以修改(不建議)
可迭代
格式 your_tuple=("name1","name2",1,……)
拆包 a,b,c=your_tuple 或者 a,*b=your_tuple(a取值第一個,剩餘賦值給b) a=your_tuple[i](只獲取第i個)
tuple比較list:
不可變,性能優化(在編譯時確定,速度差異),線程安全,可以當做dict(字典)的key
nametuple功能(數據處理較為常用):
新建nametuple: class_name=namedtuple("class_name",["name1","name2","name3"]) new_obj=class_name(name1="a",name2="b",name3="c")(初始化)
-等於class class_name:def _init_(a,b,c):pass
your_tuple=(a,b,c) new_tuple=class_name(*your_tuple)
題外:函數參數形式:*a(未指定輸入參數全部放入單星號內,形式元組) **a(將指定輸入參數名保存到雙星號內,字典形式)。mysqlclient、pymsql取出的數據都為tuple
new_tuple=class_name._make(your_tuple)(可以是字典、元組、數組,不需要星號。但是數量一定要對上,無法添加新屬性)
new_info_dict=new_tuple._asdict()(轉化為OrderedDict)
defaultdict功能(c語言實現):
name1,name2,name3分別出現次數
user_dict={} users=["name1","name2","name3","name1"] for user in users: user_dict.setdefault(user,0) #值不存在時,預設0 user_dict[user]+=1 或者 /*default_dict=defaultdict(list)(可調用對象,list空,int0等等) default_dict["name"] #name不存在時調用list pass*/ users=["name1","name2","name3","name1"] for user in users: default_dict[user]+=1 pass 字典套用字典 def get_default(): return { "name":"", "nums":0 } default_dict=defaultdict(get_default) default_dict["group1"] pass |
deque功能(雙端隊列,c語言實現,儘量保存相同類型數據):
from collections import deque
/*user_list=["name1","name2"] user_name=user_list.pop() #取末端數據併在列表中刪除*/ user_list=deque(["name1","name2"]) #可迭代對象,數組元組字典都可以,字典key值作為參數 /*append()尾部插入appendleft()插入頭部前copy()(淺拷貝)數據相同但id(存儲位置)不同,若內可變元素(eg:list)則都指向同一元素eg:[1,2]更改為[1,2,3]則copy前後兩數據都變化,若不可變元素則另一個數據不變。deepcopy(深拷貝)可變元素改變後另一元素不變。a.extend(b)將b拼接到a後面,只更改當前元素(a),並不返回一個新元素。.insert(i,"a")在i位置插入a,其後順延,並不是更改當前元素。.reverse()反轉*/
|
deque線程安全,list非線程安全
Counter功能(統計):
users=["name1","name2","name2","name3","name1",] user_counter=Counter(users)/*可以是字典數組元組字元串*/ user_counter.update("") #更新增加後再統計數據 user_counter.most_common(i)#前i個出現次數最多的 |
OrderedDict功能:
from collections import OrderedDict
user_dict=OrderedDict() user_dict["a"]='name1' user_dict["b"]='name2' user_dict["c"]='name3' #有序性,先添加在前面後添加在後面 user_dict.popitem()#彈出預設最後的元素,不需要key值 user_dict.move_to_end("a")#將a元素移到最後 |
ChainMap功能:
from collections import ChainMap user_dict1={"a":"name1","b":"name2"} user_dict2={"c":"name2","d":"name3"} new_dict=ChainMap(user_dict1,user_dict2)#將user_dict1,dict2連接起來,如果遍歷時有多個相同key值,只顯示第一個 new_dict.maps#列表形式展示數據 new_dict.maps[i]["a"]="newname"#將第i個元素key為a的value更改為newname |