您的位置:首页 > 其它

day3 类型转换

2020-07-08 16:50 113 查看

类型转换

  • 2.自动类型转换 Number( int float bool complex)
  • 3.容器类型的强制转换(str list tuple set dict)
  • 变量的缓存机制 (仅对python3.6版本负责)
  • 1.强制类型转换 Number (int float bool complex)

    var1 = 99
    var2 = 98.789
    var3 = True
    var4 = 3-4j
    var5 = "987"
    var6 = "abc123"

    (1) int 强制转换成整型

    res = int(var2) #99
    res = int(var3) #1
    res = int(var4) #error
    res = int(var5) #987
    res = int(var6) #error

    (2) float 强制转换成浮点型

    res = int(var1) #99.0
    res = int(var2) #98.789 无需转换
    res = int(var3) #1.0
    res = int(var4) #error
    res = int(var5) #987.0
    res = int(var6) #error

    (3) complex 强制转换成复数

    res = int(var1) #99 + 0j
    res = int(var2) #98.789 + 0j
    res = int(var3) #1 + 0j
    res = int(var4) #无需转换
    res = int(var5) #987 + 0j
    res = int(var6) #error

    (4) bool 强制转换成布尔型

    """
    bool为假的10种情况 0 0.0 0j False "" [] () set() {} None
    #None 是系统关键字 用来初始化
    """

    2.自动类型转换 Number( int float bool complex)

    """
    自动类型转换规则:默认由低精度 向 高精度自动转换
    bool > int > float > complex
    """

    bool + int

    print(False+ 3) # 1 + 3 = 4

    bool + float

    print(True + 4.15)# 1.0 + 4.15 = 5.15

    bool + complex

    print(True + 3+4j)# 1 +0j + 3 + 4j = 4+4j

    int + float

    print(3 + 4.6) # 3.0 + 4.6 =7.6

    int + complex

    print(10 + 4-3j )# 10 + 0j + 4 - 3j = 14 + 3j

    float + complex

    print(5.68 + 5-100j) # 5.68+0j + 5 - 100j = 10.68 - 100j

    3.容器类型的强制转换(str list tuple set dict)

    strvar = '天气,大海,acb'
    listvar = ["周一","周二","周三"]
    tuplevar = ("白天","黑夜","傍晚")
    setvar = {"一月","二月","三月"}
    dictvar = {"天空":"蓝色","沙漠":"黄色","树林":"绿色"}
    intvar = 4567

    (1) str (都可以转换)

    """强转成字符串 在原有的数据基础上加上引号"""
    res = str(listvar)
    print(res , type(res))

    repr 可以原型化输出字符串,不转义字符(显示出引号)

    print( repr(res) )

    (2) list : 强制转换成列表

    """
    如果是字符串 把字符串的每个字符单独作为一个新元素放到列表中
    如果是字典 只保留健 形成新的列表
    如何是其他容器 在原有数据基础上换上[]
    """
    res = list(strvar)
    res = list(tuplevar)
    res = list(setvar)
    res = list(dictvar)
    print(res, type(res))

    (3) tuple : 强制转换成元组

    """
    如果是字符串 把字符串每个字符单独作为一个元素 放到新元组中
    如果是字典 只保留健 形成新的元素
    如果是其他容器 在原有的数据基础上换上()
    """
    res = tuple(var)

    (4) set : 强制转换成集合

    """
    如果是字符串 把字符串的每个字符单独的当做一个新元素放到集合中
    如果是字典 只保留健 形成新的集合
    如果是其他容器 在原有的基础上换上{}
    """
    res = tuple(var)

    (5) dict : 强制转换为字典

    二级容器 (list tuple set dict)
    # 二级列表
    lst = [1,2,[3,4]]
    # 二级元组
    tup = (5,6,7,(8,9))
    # 二级集合
    setvar = {10,11,(12,13)}
    # 二级字典
    dic ={"a":1,"b":{"c":3,"d":4}}
    # 获取4这个元素
    res = dic["b"]
    print(res) # {'c': 3, 'd': 4}
    
    res2 = res["d"]
    print(res2)
    
    # 简写一步
    res = dic["b"]["d"]
    print(res)

    强制转换字典要求

    # 等长的二级容器 : 里面的元素都是容器,容器里面的元素个数都相同
    lst = [(1,2,3) , [4,5,6]]
    lst = [(1,2) , [4,5]]
    
    # dict 强制转换成字典
    """ 强转成字典时 , 必须是等长的二级容器,里面的元素个数是2个 """
    # (1) 外层是列表或者元组或者集合,里面的容器是元组或者列表(推荐)
    lst = [("a",1),["b",2]]
    tup = (("c",3),["d",4])
    setvar = {(1,2),(3,4),("f3",3),("f4",4)}
    res = dict(lst) # {'a': 1, 'b': 2}
    res = dict(tup) # {'c': 3, 'd': 4}
    
    # (2) 里面是集合的情况,存在局限性(不推荐)
    lst = [{"a",333},{"zz",5}] # 因为集合无序,不符合定义的本意,不推荐使用
    
    # (3) 里面是字符串的情况,语法上正确,但是有局限性(不推荐)
    lst = [("a",1),"b2"] # 字符串长度只能2个
    # lst = [("a",1),"b23"] error
    
    """
    总结:
    str()  list()  tuple() dict() set()
    默认创建一个该数据类型的值
    """

    变量的缓存机制 (仅对python3.6版本负责)

    """机制: 只有两个值相同 就只开辟一个空间
    
    ---整型---
    # -->Number 	部分 : -5 ~ ∞(正无穷)
    # -->float		部分 : 非负数
    # -->bool		部分 : 值一样
    # -->complex	部分 : 正虚数
    
    ---容器类型---
    # -->str		部分 : 字符串相同
    # -->tuple		部分 : tuple=()  空元组
    
    """
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: