python中資料型別的轉換and變數快取機制
1.Number(int float bool complex)資料型別轉換
1.1強制型別轉換
var1 = 10
var2 = 1.3
var3 = True
var4 = 4+3j
var5 = "9988"
1.1.1轉換成整型:浮點型,布林型,純數字字串均可轉換
res=int(var2) #1
res=int(var3) #Ture=>1 False=>0
res=int(var4) #複數不可轉為整型
res=int(var5) #9988,但帶小數點的純數字字串不可轉
1.1.2轉換成浮點型:整型,布林型,純數字字串均可轉換為float
res=float(var1) #10.0
res=float(var3) #True=>1.0 False=>0.0
res=float(var4) #不可轉
res=float(var5) #9988.0
1.1.3轉換成複數:整型,浮點型,布林型,純數字字串均可轉為複數
res=complex(var1) #10+0j
res=complex(var2) #1.2+0j
res=complex(var3) #True=>1+0j False=>0j
res=complex(var5) #9988+0j
1.1.4轉換成布林型:
布林值為假的十種情況:0,0.0,False,0j,'',[],(),set(),{},None
1.2自動轉換:由低精度向高精度自動轉換
精度由低向高:bool=>int=>float=>complex
1.2.1 bool+int
res=Ture+3 #1+3=4
1.2.2bool+float
res=False+2.3 #0.0+2.3=2.3
1.2.3bool+complex
res=True+8j #1+0j+8j=1+8j
1.2.4int+float
res=3+3.4 #3.0+3.4=6.4
1.2.5int+complex
res=3+7j #3+0j+7j=3+7j
1.2.6float+complex
res=3.3+7j #3.3+0j+7j=3.3+7j
2.容器型別的強制轉換(str,list,tuple,set,dict)
strvar='我有一個夢'
listvar=[1,2,3,4]
tuplevar=(2,4,'b')
setvar={1,2,3,4}
dictvar={f1:1,f2:2,f3:3}
2.1轉換成字串:Number/容器型別均可轉換成字串
res=str(listvar) #'[1,2,3,4]'
res=str(tuplevar)#'(2,4,''b")'
res=str(setvar)#'{1,2,3,4}'
res=str(dictvar)#'{"f1":1,"f2":2,"f3":3}'
2.2轉換成列表:如果是字串,會把每個字元單獨作為一個元素放入列表中;如果是字典,只保留鍵,組成一個新列表;其他容器tuple,set只在原資料基礎上加上[]
res=list(str)#['我','有','一','個','夢']
res=list(tuplevar)#[2,4,'b']
res=list(setvar)#[1,2,3]
res=list(dictvar)#['f1','f2','f3']
2.3轉換成元組:如果是字串,會把每一個字元單獨的作為一個元素放到元組中;如果是字典,只保留鍵,形成一套新的元組;如果是其他的容器,只是單純的在原有資料的基礎上換上()
res=tuple(strvar)#('我','有','一','個','夢')
res=tuple(listvar)#(1,2,3,4)
res=tuple(setvar)#(1,2,3)
res = tuple(dictvar)#('f1','f2','f3')
2.4轉換成集合:如果是字串,會把每一個字元單獨的作為一個元素放到集合中(無序,自動去重);如果是字典,只保留鍵,形成一套新的集合;如果是其他的容器,只是單純的在原有資料的基礎上換上{}
res=set(strvar)#{'夢','有','我','個','一'}
res=set(listvar)#[1,2,4,3]
res = set(dictvar)#{'f1','f2','f3'}
2.5轉換成字典
2.5.1二級容器(list,tuple,set,dict)
2.5.1.1二級列表:lst = [1,2,[3,4]];二級元組:tup = (5,6,7,(8,9));二級集合:setvar = {10,11,(12,13)};二級字典:dic ={"a":1,"b":{"c":3,"d":4}}
五級容器:container = [100,200,300,(1,2,3,4,{"a":1,"b":{"c":15,"d":[11,12,"bingo"]}})] 獲取bingo:container[-1][-1]["b"]["d"][-1]
2.5.1.2等長二級容器:裡面的元素都是容器,且容器裡的元素個數相同
lst = [(1,2,3) , [4,5,6]]
2.5.1.3強轉成字典時 , 必須是等長的二級容器,裡面的元素個數是2個
(1)外層是列表或者元組或者集合,裡面的容器是元組或者列表(推薦)
(2) 如何裡面是集合,語法上允許,但是有侷限性,集合無序使定義無意義(不推薦)
(3) 如果使用字串,語法上正確,但是有侷限性(不推薦)
字串中的字元必須為兩個