1. 程式人生 > 實用技巧 >python中資料型別的轉換and變數快取機制

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) 如果使用字串,語法上正確,但是有侷限性(不推薦)

字串中的字元必須為兩個