Number數據類型(int整型 float浮點型 bool布爾型 complex復數類型)
(1)int 整型 (正整形 0 負整型)
'''var 指代一個變量'''
type 用來獲取變量的類型
id 用來獲取變量所指向那個值的地址
三種進制表達最后的結果 均為 int整形類的數據 屬於十進制的結果
(2)float 浮點型即小數
它有兩種表達形式:
(3)bool 布爾型 (True 真 False假)
(4)complex 復數類型
復數:實數 + 虛數 兩部分構成的
complex(實數,虛數) 注意:這種表達方式虛數不能加j 即(5,2) 非 (5,2j) 否則會錯
例:5 + 6j 5 就是實數 6j 就是虛數
j 若有一個數,它的平方等於-1,那么這個數就是j,科學家認為有,復數代表的是高精度類型.
表達方式一:
complexvar = 5 + 6j
complexvar = 3 - 2j
print(type(complexvar))
print(id(complexvar))
表達方式二: complex(實數,虛數)
res = complex(14,2)
print(res) => (14,2)
容器數據類型(str 字符串型 list 列表型 tuple 元組型 set集合型 dict字典型)
(1)str 字符串型
'''用引號引起來的就是字符串,三種引號:單引號 雙引號 三引號'''
轉義字符:\ (1) 把有意義的字符轉變為無意義的字符
(2) 把無意義的字符轉變的有意義
\n 或者 \r\n : 代表"換行"意思
\t : 代表"一個縮進"意思
\r : 代表將\r后面得所有字符拉到該行首
三種引號表達的字符串:
# 單引號表達字符串
# 雙引號表達字符串
# 這兩種情況較為特殊,如果外面是雙引號,里面就要單引號,反之一樣
# 非要使用雙引號,使用 \ 進行轉義
# 三引號表達字符串 (支持跨行)
# 元字符串 r"123"
'''元字符串可以讓轉義字符失效'''
# 字符串的格式化
"%d %f %s" 語法 : "字符串" % (實際值)
%d 占位符 d代表整型數據
結果:何健翰買了3個充氣娃娃
%f 占位符 f代表浮點型數據 默認保留6位小數點,f前面有數值,則根據數值是多少保留對應小數點
%s 占位符 代表字符串
(2)list 列表型
'''特征:可以獲取和修改數據,排列有序'''
# 列表值的獲取方法如下解釋:
# 正向下標 從0開始代表第一個數值 1代表第二個數值 往后以此類推
# 反向下標 從-1開始代表最后一個值 -2代表倒數第二個值 往前以此類推
# 若是不知道列表的長度 想要快速獲取最后一個值的下標 怎么辦?
# 用 len 來獲取列表的長度
# listvar = ["傻逼",3,3.14,True,False,2-2j,"傻逼",3,3.14,True,False,2-2j]
# res = len(listvar)
# res2 = len(listvar)-1
# print(res2)
# print(listvar[res2])
列表的修改
(3)tuple 元組型
''' 特征:可以獲取但不能修改數據,排列有序'''
'''
# tuplevar = () 這是一個空元祖
# tuplevar = (1) 這是一個整型
# tuplevar = (1,) 這是一個元祖
# 綜上所述 : 判斷tuplevar = (?)或tuplevar = (?,)這兩種是不是元組,
取決於里面值是否有逗號,有 就是元組 沒有就是別的數據類型
空元祖可以使用()來表示
'''
# 獲取元組中的數據 : 跟列表list的取值一模一樣 (正向下標,反向下標)
# 修改元組中的值,不可以修改,會進行報錯
(4)str 字符串
strvar = ""
# 特征:可以獲取,但不可以修改,有序排列
# 獲取字符串中的數據:跟列表list 元組tuple的取值一模一樣(正向下標,反向下標)
# 修改字符串當中的值,不可修改,會進行報錯
(5)set 集合型
setvar = {} 數據類型顯示是一個dict 字典
setvar = set() 強制轉換成一個空集合的數據類型(只有這一種類型)
# 特征:不可獲取,也不可以修改,無序排列,自動去掉重復數據
# 獲取集合當中的數據:不能獲取,會進行報錯
# 修改集合當中的數據:不可修改,會進行報錯
(6)dict 字典
dictvar = {}
# 冒號左邊是鍵,右邊是值,鍵值對之間用逗號隔開
# 特征 : 可以獲取,可以修改,無序排列(python3.6版本看似有序、實則無序
# 底層,使用了哈希算法,儲存的數據是散列)(3.5版本無序),鍵值對儲存的數據
# 獲取字典當中的數據:可以獲取,直接輸入冒號左邊的鍵即可取值的數據
# 修改字典當中的數據:可以修改,直接將要改的值替換掉 鍵 就可實現修改
# 一般在命名字典的鍵時,推薦使用字符串,按照變量命名的字符串.
# 哈希算法
'''
定義;把不可變的任意長度值計算成固定長度的唯一值,這個值可正可負,可大可小
但長度固定,該算法叫哈希算法,這個固定長度值叫哈希值
特點: 哈洗過的數據儲存時,是一個隨機存放的散列,並不是按照次序依次存放的,
所以通過哈希算法儲存數據的速度較快
查找: 字典的鍵就是按照哈希算法算出來的,可以通過該鍵找散列中的對應值,形成
映射關系,所以集合,字典在本質上都是無序的
版本:3.6版本之前都無序
3.6版本之后把字典的字面順序記錄下來,當從內存拿數據的時候,根據字面
順序重新排列,所以看起來有序,但本質上無序
'''
"可哈希數據: (不可變的數據) Number (int float bool complex)" str tuple"
"不可哈希的數據 (可變的數據) list set dict"
# 自動類型轉換( 針對於Number數據類型來說的 )
# 規律: 精度從低到高 bool -> int -> float -> complex
# 當兩個不同的數據類型運算時,默認向更高精度轉化
# True 轉化成整型是 1 False 轉化成整型是 0
# int + float 類型較特殊,最終值會保留小數點后15~18位,因為float在本質上存在精度損耗,
因為小數的二進制在內存中是無限循環沒有終止,一般截取15~18位