首页 > 编程语言 > 详细

python中数据类型的转换and变量缓存机制

时间:2020-07-01 21:14:03      阅读:57      评论:0      收藏:0      [点我收藏+]

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不同文件中

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     

 

python中数据类型的转换and变量缓存机制

原文:https://www.cnblogs.com/l0928/p/13221210.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!