• 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) 如果使用字符串,语法上正确,但是有局限性(不推荐)

          字符串中的字符必须为两个

    3.python3.6变量缓存机制

    3.1同一个文件中

    3.1.1Number部分

    (1)对于整型而言,-5~正无穷范围内的相同值 id一致

    (2)对于浮点数而言,非负数范围内的相同值 id一致

    (3)布尔值而言,值相同情况下id一致

    (4)复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)

    3.1.2容器类型部分

    (1)字符串 和 空元组 相同的情况下,地址相同

    (2)列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]

    3.2不同文件中

         

  • 相关阅读:
    Intent.ACTION_TIME_TICK 广播
    Android ContentObserver
    android:duplicateParentState属性解释
    Android CursorAdapter
    android AndroidManifest.xml 多个android.intent.action.MAIN (
    PreferenceActivity详解
    WORD和WPS中英文混合的内容间距离很大怎么办?
    Android 屏幕适配
    OC第四课
    PL/SQL联系oracle成功可以sql解决的办法是检查表的名称无法显示
  • 原文地址:https://www.cnblogs.com/l0928/p/13221210.html
Copyright © 2020-2023  润新知