类型转换
1,强制类型转换
1.1 number的转换(int,float,bool,complex)
num1 = 10 num2 = 10.6 num3 = True num4 = 3 + 4j
1.1.1 int强制转换成整型
res = int(num1) #10 res = int(num2) #10 res = int(num3) #1 False =>0 res = int(num4) #error
1.1.2 float强制转换成浮点型
res = float(num1) #10.0 res = float(num2) #10.6 res = float(num3) #1.0 False =>0.0 res = float(num4) #error
1.1.3 complex强制转换成复数
res = complex(num1) #10 + 0j res = complex(num2) #10.6 + 0j res = complex(num3) #1 + 0j False =>0j res = complex(num4) #3 + 4j
1.1.4 bool强制转换成布尔值
False:0,0.0,0j,False,"",[],(),set(),{},None
1.1.5 总结
res = int() #默认创建该数据类型的默认值
1.2容器类型的转换(str,list,tuplr,set,dict)
strvar = '我爱中国' listvar = [0,'name',] tuplevar = (0.0,'我爱python',[1,5+3j,],) setvar = {0,1,2,3,4,5,5,} dictvar = {"name":"bajie","age":18,}
1.2.1 str (number/container)通吃
res = str(listvar) #将原类型最外层加"listvar" print(res1,tpye(res1)) #repr 原型化输出字符串 prinr(repr(res1))
1.2.2list强制转换成列表
''' str:将每一个字符单独作为一个元素放到列表 dice:将字典的键作为一个元素放到列表 其他容器:替换例如(1,) -> [1,] '''
1.2.3tuple强制转换成元组
''' str:将每一个字符单独作为一个元素放到元组 dice:将字典的键作为一个元素放到元组 其他容器:替换例如[1,] -> (1,) '''
1.2.4set强制转换成集合(无序,去重)
''' str:将每一个字符单独作为一个元素放到集合 dice:将字典的键作为一个元素放到集合 其他容器:替换例如[1,2,] -> {2,1,} '''
1.2.5dict强制转换成字典
1.2.5.1二级容器(list,tuple,set,dict)
# 二级容器 listvar = [1,[2,]] setvar = {'name',(1,2,)} dictvar = {True:"中国",{"nums":[1,2,3,4,5,6],}} # 四级容器 lisvar = [1,[2,3,["name",[True,]]]]
1.2.5.2dici强制转换等长的二级容器
# 等长(内容器不推荐集合,键值不确定)and TWO元素 datalist = [[1,2],["name","bajie"]] dataset = {(1,2),{"name","bajie"}} res = dict(datalist) # {1: 2, 'name': 'bajie'} res = dict(dataset) # {1: 2, 'bajie':'name'} # 奇葩写法 datastr = [[a,1],"b2"] # {'a': 1, 'b': '2'}
2 自动类型转换
''' 精度从低到高进行转换 :bool - int - float - complex ''' res1 = True + 1 # 2 res2 = True + 2j # 1 + 2j res3 = 1 + (2 + 2j) # 1 + 2j res4 = 0.2 + 2j # 0.2 + 2j res5 = False + 1 + 2.5 + 2j # 3.5 + 2j
3变量的缓存机制(针对python3.6前)
3.1 number部分
(同一文件,模块) #1 整型 (-5 ~ 正无穷 <小数据池:id地址相同>) #2 浮点型(非负数) #3 bool值相同 #4 复数类型(只有虚数部分) (不同文件,模块) #1 整型 (-5 ~ 256 <小数据池:id地址相同>)
3.2容器部分
#1 strvar = "相同字符串" #2 空元组