深淺拷貝,元組型別,字典型別,字元編碼

2022-08-02 01:45:15 字數 3126 閱讀 3061

複習:

1.深淺拷貝

值拷貝:直接賦值  =  號, 列表中的任何值發生改變,第二個中的值都會隨之改變

淺拷貝:通過copy()方法 ls2 = ls.copy(),第乙個中存放的值的位址沒有改變, 但內部的值發生改變,第二個會隨之改變

深拷貝:通過deepcopy()方法 ls3 = deepcopy(ls),第乙個中存放的值發生任何改變,第二個都不會隨之改變

2.元祖型別

tuple()

元組:可以理解為不可變的列表

# 1.值可以為任意型別

# 2.可以存放多個值 - 可以進行成員運算

# 3.可以存放重複的值 - 可以計算成員出現的次數

# 4.有序儲存 - 可以通過索引取值,可以切片

3.字典型別

# 容器(集合):存放多個值的變數

# 單列容器(系統中的單列容器很多):list | tuple

# 雙列容器(map):只有dict,存放資料 成對出現,dict存放資料採用 key-value鍵值對方式​​

# 字典中的key可以為什麼型別:key必須為不可變型別

#       -- key是取value的唯一依據,key一旦被確定,就需要唯一確定(不能被改變)

# 字典中的value可以為什麼型別:value可以為任意型別

#       -- value是用來存放世間所有存在的資料

字典的增刪改查:(詳見day06的部落格)

update(dict).  將新的字典新增到原字典中,如果原字典已經存在,則不做改變,原字典中不存在,則新增。

若已存在原字典的key,則更新value

# dic = 

# dic2=

# dic.update(dic2) # 更新字典,如果第乙個列表中不存在第二個列表中的key,則新增到新列表中

# print(dic) # 輸出結果為

# dic =

# dic2=

# dic.update(dic2) # 如果第乙個列表中存在第二個列表的key,則會更新value,如果key和value都相同,則不做任何改變

# print(dic)

setdefault(key,value):若key已經存在,不做改變,若不存在key,則新增到字典中

# dic = 

# dic.setdefault('c',3) # 新增,將key和value新增到列表,如果key已存在,則不做任何改變

# print(dic) # 輸出結果

get(key,default):按照key查詢字典中是否存在,若存在,返回value,若不存在,返回none

# dic = 

# print(dic.get('a')) # 查詢字典中 key,如果存在,則返回值 此處返還值 1

# print(dic.get('c')) # 如果不存在,則返回none 此處返還 none

pop(key):根據key值刪除值,有返回值。若key存在,則返回value,若不存在,則報錯

pop(keyitem):隨機刪除字典中的值

dic = 

# dic.popitem() # 隨機刪除乙個key,一般是刪除末尾,如果刪除的字典為空字典,則會報錯

# print(dic) # 輸出結果

迴圈: for k,v in dic.items():  #  使用兩個對應關係來接受字典迴圈的key與value

dic = 

print(dic.items()) # 因為字典不可被for迴圈,可以使用dic.item() 來使字典變成乙個列表型別,而內部的key與value變成可遍歷的(鍵, 值) 元組陣列

# 輸出結果為 dict_items([('a', 3), ('b', 1), ('c', 2)])

集合是不可變型別,可增可增,無序無索引無key,不能取值不能改值,可以通過for迴圈取值,取值的順序不確定

特點:不能存放重複的資料,故可以用來去重

1 .資料型別的相互轉換

1.1)那些型別可以轉換為數字

1.2)數字轉換字串

1.3)字串與列表的相互轉換  ******

2 . 字元編碼

2.1)應用程式開啟的三個步驟:

2.1.1)開啟應用程式

2.1.2)將資料載入到記憶體中

2.1.3)cpu將記憶體中的資料直接翻譯成字元顯示給使用者

2.2)python直譯器開啟的三個步驟:

2.2.1)開啟python直譯器

2.2.2)將資料載入到記憶體中

2.2.3)cpu將記憶體中的資料執行結果顯示給使用者,如何解釋執行不能通過,錯誤資訊提供給使用者

2.3)亂碼:

儲存的編碼格式與取出的編碼格式不一致,就會出現亂碼,為了

2.4)字元編碼:

2.4.1) 電腦只能識別高低電頻對應的 0 ,1,所以就誕生了編碼表  

2.4.2)ascii 表:英文本母,英文符號,數字與機器能識別的字元的對應關係,乙個字母或符號代表乙個位元組,8個二進位制位就能存放所有的對應關係

2.4.3)gbk:中文與機器能識別的字元所對應關係的**,它完全相容ascii表,而他的中文是由2個位元組來表示,16個二進位制能存放所有的漢字,和ascii碼的對應關係

2.4.4)unicode(萬國碼):世間常用國家的常用字元,與機器能識別的字元的對應關係表

2.4)轉碼:

2.4.1)unicode存在漢字與二進位制對應關係,gbk也存在漢字與二進位制對應關係,它將gbk(或者其他國家定義的字元編碼)存放的資料轉存到unicode資料中,只是存放資料採用位元組數的長度不一致,utf-8與utf-16是unicode編碼表的兩種體現方式

utf-8:以1個位元組存放英文本母,以3或者6個位元組來存放漢字,在英文資料過多時,他會更省空間,用來傳輸效率更高,所以在計算機中,硬碟與記憶體需要資料傳輸,所以都採用utf-8進行傳輸,而且由的漢字很複雜,所以utf-8也可以存放更多的漢字。

而utf-16,所有支援的符號或者字元都是採用2個位元組來存放,讀存資料採用定長,不用計算,讀存效率高,而記憶體需要高速讀寫,所有採用utf-16的編碼

所以我們儲存與讀取,一定要同意編碼!

型別轉換 深淺拷貝

容器 型別 list tuple set dict 型別 str list tuple,set,dict 前提 列表必須符合 1,2,tuple list set list dict list 但是只是把字典中可以儲存到列表中 list 轉列表 str 轉字串 tuple 轉元組 set 轉集合 d...

JS資料型別 深淺拷貝

1.基本資料型別有number,string,boolean,null,undefined,symbol es6新增的 也稱原始資料型別。2.js有原始值型別和引用值型別,var str hello str 0 z 無法修改 3.js記憶體分為堆記憶體和棧記憶體,棧記憶體儲存的都是有固定大小 空間的...

變數型別 列表 元組 字典

空列表 varibals 或varibals list 生成乙個空列表 注 列表可以容納任意型別的物件,任意數量的物件 重點 列表是可變型別的 varibals 1,2,3,ni hao hello,python 10,100 1.列表簡單操作 改變列表中的元素值 列表是可變型別的,列表長度可增可減...