2020.11.20
阿新 • • 發佈:2020-11-21
容器型別 (str list tuple set dict)
一. list 列表型別
特徵:可獲取,可修改,有序
1.定義空列表
listvar = []
print(listvar,type(listvar))
2.定義普通列表 listvar = [19,3.14,"你好",5-6j] 3.獲取列表中的元素 正向索引 : 0 1 2 3 listvar = [19,3.14,"你好",5-6j] 逆向索引 : -4 -3 -2 -1 res = listvar[2] print(res) 4.獲取列表中最後一個元素 通過逆向索引下標 res = listvar[-1] print(res) 通過len來獲取長度 len 可以獲取容器中的元素個數(長度) res = len(listvar) print(res) length = res -1 # 4 -1=3 獲取最後一個元素的索引下標 res = listvar[len (listvar)-1] print(res) 4.修改列表中的元素 listvar =[19,3.14,"你好",5-6j] listvar[1] = 11 print(listvar) 二.tuple 元組型別 特點:可獲取,不可修改,有序 1.定義一個空元組 tuplevar = () 什麼元素不寫,可以表達空元祖的概念 定義一個普通元組 tuplevar("啊","為") 2.獲取元組當中資料 res = tuplevar[1] print(res) 不可修改元組中的資料 3.注意點: 區分是否是元組,由逗號這個識別符號決定 三 字串 特徵:可獲取,不可修改,有序 集合型別 set (交差並補) 特點:無序,自動去重 1.定義一個集合 setvar = {"個個","試試"} print(setvar,type(setvar)) 不可獲取元素,不可修改元素 定義一個空集合 setvar = set() 2.字典型別 dict 字典裡的資料以鍵值對的方式進行儲存,表面有序,實際上無序; 在python3.6版本之後,底層做了優化,儲存時,記錄了字典的定義順序 在獲取字典時,把無序儲存的資料拿出來,按照定義字典的字面順序重新排序; 語法: {鍵1:值1,鍵2:值2,....} 定義一個字典 dictvar = {1:a,b:3} 獲取字典中的元素 res = dictvar[1] 修改字典中的元素 dictvar[1] = 2 集合和字典之間的注意事項 集合的值和字典的鍵有資料型別上的要求: 允許的資料型別 (可雜湊的資料型別,不可變的資料型別) :Number(int ,float ,bool,complex ),str,tuple 不允許的資料型別 (不可雜湊的資料型別,可變的資料型別) : list,set,dict (瞭解) 字典的鍵和集合的值在底層記憶體儲存時,使用了雜湊演算法 雜湊演算法的要求是該資料型別為不可變的資料型別才能儲存 雜湊演算法特點:無序的雜湊; 為什麼要提出雜湊演算法? 為了把資料均勻的儲存在記憶體之後,減少雜湊碰撞 讓資料更快的儲存在記憶體中
同一檔案下,變數的快取機制 Number部分 1.對於整型而言,-5~正無窮範圍內的相同值 id 一致 2.對於浮點型而言,非負數範圍內的相同值 id一致 3.布林型而言.值相同情況下 id 一致 4.複數在 實數+虛數 這樣的結構永不相同(只有正虛數的情況列外) 容器型別部分 5.字串 和空元組 相同的情況下 id相同 6.列表,元組,字典,集合無論什麼情況下 id標識都不同[空元組列外] 總結: 無論是同一檔案的快取機制,還是不同檔案的小資料池,都是為了提升執行的效率,減小空間損耗; 強制型別轉換 Number (int float complex bool) 1.int的強制轉換 (整型 浮點型 布林型 純數字字串) 2.float的強制轉換 (整型 浮點型 布林型 純數字字串) 3.complex的強制轉換 (整型 浮點型 布林型 純數字字串 複數) 4.bool 的強制轉換 沒有資料型別的限制,可以轉換一切資料型別; bool => True 或者 False 布林型為假的十種情況: Number : 0 0.0 0j False 容器 : () '' [] {} set() 關鍵字 :None none: 代表空的,一般用來對變數做初始化操作 格式: a = None b = None 自動型別轉換 Number 精度從低到高 bool > int > float >complex 自動型別轉換原則 :把低精度的資料向高精度進行轉換; 精度損耗 (寫程式時,不要用小數做比較的條件,會導致結果不準確,一般系統會把小數位擷取15~18位而產生資料的誤差) 容器型別的強制轉換 (str list tuple set dict) str 強制轉換成字串 特點:在原資料的兩邊套上引號,表達字串的型別:可以強轉一切資料 list 強制轉換列表 特點:如果是字串,把裡面的內容一個個拿出來,作為列表的新元素 如果是字典,只保留字典鍵,值不要 如果是其他容器,就是單純的把兩邊的符號換成[] tuple 強制轉換元組 特點: 如果是字串,就是把裡面的字元一個個拿出來,作為元組的新元素 如果是字典,只要字典的鍵,不要值 如果是其他容器,就是把兩邊的字元換成() set 強制轉換集合 特點: 如果是字串,就是把裡面的字元一個個拿出來,作為集合的新元素 (無序,去重) 如果是字典,只要字典的鍵,不要值 如果是其他容器,就是把兩邊的符號換成{} dict 字典的強制轉換 必須是等長的二級容器,且元素個數是2個 型別: 1.外面是列表,裡面是列表或者元組 2.外面是元組,裡面是列表或者元組 3.外面是集合,裡面是元組 二級容器 (list tuple set dict) 等長的二級容器 (裡面的元素都是容器 + 容器裡面的元素個數都相同)