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) 如果使用字符串,语法上正确,但是有局限性(不推荐)
字符串中的字符必须为两个
3.python3.6变量缓存机制
3.1同一个文件中
3.1.1Number部分
(1)对于整型而言,-5~正无穷范围内的相同值 id一致
(2)对于浮点数而言,非负数范围内的相同值 id一致
(3)布尔值而言,值相同情况下,id一致
(4)复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)
3.1.2容器类型部分
(1)字符串 和 空元组 相同的情况下,地址相同
(2)列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]
3.2不同文件中
原文:https://www.cnblogs.com/l0928/p/13221210.html