当前位置: 首页 > 后端技术 > Python

python数据类型的强制转换

时间:2023-03-25 20:50:57 Python

数据类型的强制转换如果要将一种数据类型转换为另一种数据类型,只需要放入对应类型的函数中即可。Number类型的数据转换强制转换为可以转换为int的数据类型,整数类型float,浮点类型bool,布尔类型str,字符串(整数类型)数据转换#Integer类型(整型转换完好)print(int(10))#浮点型(浮点型按一次返回法转整型)print(int(10.999))#布尔型(布尔型只有两个值,并且只有两种类型转换为整数类型,True=1,False=0)print(int(True))print(int(False))#string(字符串只能转换为不带引号的整型)print(int('-123'))print(int('123'))强制转换为float可转换的数据类型int整型float浮点型bool布尔型strString(整型,浮点型)数据转换#整数型(整数型转换就是加一个小数,位为0)print(float(10))#浮点型type(浮点型转换不变)print(float(10.999))#布尔型(布尔型只有两个值,转成整型也只有两个类型,True=1.0,False=0.0)print(float(True))print(float(False))#string(字符串(去掉引号后,只有整型或浮点型才能转换)print(float('-123'))print(float('1234.134'))casttoboolpython中的所有数据类型都可以转为boolean,但是只有两种结果,True和False数据转换在python中,只有十种情况下转为bool的数据为False,其余是真实的。#也就是说python中所有空数据都是False#1.整数(0)print(bool(0))#2.浮点型(0.0)print(bool(0.0))#??3.Boolean(False)print(bool(False))#4.复数(0j)print(bool(0j))#5.String(空字符串)print(bool(''))#6.List(空列表)print(bool([]))#7.Tuple(空元组)print(bool(()))#8.Collection(空集合)print(bool(set()))#9.Dictionary(空字典)print(bool({}))#10,None(python关键字,无意义)print(bool(None))强制转换为complexintintegerfloatfloatingpointboolbooleancomplexstr可以转换的数据类型string(integer,floatingpoint,complex)数据转换#整数型(整数转换为原数+0j)print(complex(10))#浮点型(浮点数转换为原数+0j)print(complex(10.999))#布尔型(布尔型只有两个值,整数只有两种类型,True=1+0j??,False=0j)print(complex(True))print(complex(False))#complexnumber(复数转换完好,0+0j=0j)print(complex(1234+341j))print(complex(0+0j))#string(字符串为整型,去掉引号后才为浮点型和复数只能转换)print(complex('-123'))print(complex('1234.134'))print(complex('1234+0j'))数字类型自动转换不同类型数字一起运算时,结果会自动由低精度转换为高精度。当一个低精度的数和一个高精度的数进行运算时,最终会变成一个高精度的数类型。精度从低到高排序:bool----->int----->float------>Complexbool,除bool之外的任何数据类型都不会是boolcomplex。任何类型数据的运算都会变得复杂#比如计算低精度的bool和高精度的int,结果会自动变成高精度的int#bool+intres=True+100print(res,type(res))#bool+floatres=True+100.11print(res,type(res))#bool+complexres=True+0jprint(res,type(res))#int+floatres=123+100.9print(res,type(res))#int+complexres=123+0jprint(res,type(res))#float+complexres=100.0000+0jprint(res,type(res))containertypecast容器类型转换,使用对应的容器函数进行转换。转换为字符串所有支持数据类型转换的数据类型#方法一,直接加引号print('[1,2,3]')#方法二,使用str函数print(str([1,2,3]))#[1,2,3]#方法三,使用repr函数print(repr([1,2,3]))#[1,2,3]#repr函数的作用:原型输出string,Unescapedcharacters(quotesareshowed)lstvar=[1,2,3]res=str(lstvar)print(repr(res))#'[1,2,3]'转换为列表Onlydatatypesthatsupportconversion注意点如果容器是字符串,每个字符串都会作为一个元素放入列表中;如果是字典,则只保留key,组成一个新的list;如果是其他容器,则简单地将原来添加的数据替换为[];#1.String#将字符串中的每个字符视为一个元素var='hellomotherland'print(list(var))#['h','e','l','l','o','','m','o','t','h','e','r','l','a','n','d']#2.字典变量={'一':1,'二':2,'三':3}print(list(var))#['一','二','三']#3.其他数据类型var=(1,3,4,5,6)print(list(var))#[1,3,4,5,6]var={1,3,4,5,6}print(list(var))#[1,3,4,5,6]被转换为一个元组。支持转换的数据类型只是一个容器。注意事项如果是字符串,每个字符串都会被当成一个单独的元素如果放在列表中,如果是字典,只保留key,形成一个新的列表。如果是另外一个容器,就在原来的数据基础上简单的用()代替。和list一样#1,string#characterstring中的每一个字符都被当作一个元素var='hellomotherland'print(tuple(var))#('h','e','l','l','o','','m','o','t','h','e','r','l','a','n','d')#2.字典var={'one':1,'two':2,'three':3}print(tuple(var))#('one','two','three')#3.其他数据类型var=[1,3,4,5,6]print(tuple(var))#(1,3,4,5,6)var={1,3,4,5,6}print(tuple(var))#(1,3,4,5,6)转换为集合支持的数据类型只是一个容器。注意集合的变化和列表、元组的变化是一样的,只是在原有数据的基础上换成{};但是集合是无序的,返回结果中元素的顺序不固定#1.String#字符串中的每个字符都被视为一个元素var='hellomotherland'print(set(var))#{'d','r','','h','n','e','t','m','a','o','l'}#2.字典var={'one':1,'two':2,'three':3}print(set(var))#{'two','one','three'}#3.其他数据类型var=['1','3','4','5','6']print(set(var))#{'5','4','6','1','3'}var=('1','3','4','5','6')print(set(var))#{'5','4','6','1','3'}和more当一个容器嵌套在一个容器内时,这个容器称为二级容器;如果嵌套容器内嵌套了另一个容器,则最外层的容器称为三层容器;以此类推,一共有四层,Level5...容器的类型取决于最外层的容器,不同类型的容器可以相互嵌套,除了集合和字典;因为字典的键和集合中的值必须是hashable类型,可以是Hash数据类型Number、str、tuple;多级容器不包含字符串,字符串是特殊的容器,字符串中的任意一个字符都是字符串的一个单独元素;#二级容器#比如嵌套在一个列表中设置一个列表var=[1,2,[1,2,3]]#三级容器#比如一个列表嵌套在一个列表中,有一个嵌套列表中的元组var=[1,2,[3,4,(5,6)]]#...#二级字典#使用的字典key是用来存储数据的,所以嵌套容器要放在key下面var={'1':1,'2':2,'666':{'3':3,'4':4}}获取多级容器中的值#获取嵌套容器中的数据,需要通过下标索引和key逐层获取数据#练习:获取四级容器中的值!!!如何获得10No1_level4_container=[1,2,3,4,(1,2,3,4,{1:1,2:2,"msr":[1,2,3,4,10]})]print("---原始四级容器")print(No1_level4_container)#在这个多级容器中,所有的容器都是最后一个,所以用python特有的倒下标一个一个获取#1.获取元素first组为二级容器res=No1_level4_container[-1]#通过list的下标-1选择释放一级print("---释放一级")print(res)#2.得到Dictionary后res=res[-1]res1=No1_level4_container[-1][-1]print("---deprivationleveltwo")print(res)print(res1)#3.得到res的值时对应键值msr=res['msr']print("---Getmsr")print(res)#4.取值为10时下标-1或4res1=res[-1]res2=res[4]print('---Finalresult')print(res1,res2)#shorthandres=No1_level4_container[-1][-1]['msr'][-1]print('---shorthandresult')print(res)等长的多级容器外层容器元素个数与嵌套容器元素个数相同#等长二级容器var=[(1,2,3,),(4,5,6,)]字典的强制转移要求必须是一个等长的二级容器,里面的元素个数必须是两个。容器转换#使用dict函数进行转换var=[('one',1),('two',2)]dctvar=dict(var)print(dctvar)print(type(dctvar))#{'one':1、'two':2}#注意事项建议使用lists和tuples,不要用collections和strings#1.外层是list或者tuple或者collection,里面的容器是推荐是Tuple或者listvar=[(1,2),[3,4]]res=dict(var)print(res,type(res))#2.不推荐集合#如果是集合,它在语法上是允许的,但有限制。因为集合是无序的,所以往往不符合定义的初衷,也就是说二级容器中的第一个元素不一定能成为key。var=[{'1',2},{'2',3}]res=dict(var)print(res)#3.不推荐使用字符串#如果使用字符串,语法是正确的,但是有局限性。因为字符串中的一个字符被认为是一个元素,所以字符串的长度不能超过两个字符,否则将无法满足强制字典转换的要求。var=[[1,2],"ab"]print(dict(var))var=[[1,2],"abc"]print(dict(var))#每种错误数据类型的函数函数#直接用它创建一个同类型的null值,即转成Boolean就会是falseprint(int())#0print(float())#0.0print(bool())#falseprint(complex())#0jprint(str())#''print(list())#[]print(tuple())#()print(set())#set()print(dict())#{}