Python的各种转换

强制类型转换 Number (int float complex bool)

  • var1 = 100
    var2 = 3.9
    var3 = True
    var4 = 4-90j
    var5 = "123"
    var6 = "123abc"
    
  • int 强制转换为整型

    可以转:int float bool 纯数字字符串
    res = int(var2)     # 3
    res = int(var3)     # True => 1 False => 0
    res = int(var4)     # error 复数不能转换为整形
    res = int(var5)     # 123
    res = int(var6)     # error  不是纯数字
    print(res , type(res))
    
  • float 强制转换为浮点型

    可以转: int float bool 纯数字字符串
    res = float(var1) 		# 100.0
    res = float(var3) 		# False => 0.0 True => 1.0
    res = float(var4) 		# error
    res = float(var5)		# 123.0
    print(res , type(res)) 
    
  • complex 强制转换为复数

    可以转: int float bool 纯数字字符串 complex
    res = complex(var1) 	# (100+0j)
    res = complex(var2)     # (3.9+0j)
    res = complex(var3) 	# False => 0j True => 1+0j
    res = complex(var5) 	# 123+0j
    print(res , type(res)) 
    
  • bool 强制转换为布尔型

    可以转: bool类型可以转换一切数据
    res = bool(var6) # True
    res = bool(var4) # True
    
  • 布尔类型为假的十种情况 (重中之重)

    """ 0 , 0.0 , 0j , False , '' , [] , (),{},set() , None """
    res = bool(0)
    res = bool(0.0)
    res = bool(False)
    res = bool(0j)
    res = bool('')
    res = bool([])
    res = bool(())
    res = bool({})
    res = bool(set())
    res = bool(None)
    print(res)
    
  • None 代表空的,什么也没有,一般用作变量的初始化

    a = None
    b = None
    

自动类型转换Number

  • 精度上从小到大的顺序:bool => int => float => complex

  • 默认在系统自动转换的时候,低精度向高精度转换.

  • bool + int
    res = True + 15  	# 1 + 15 => 16
    
    bool + float
    res = True + 3.8 	# 1.0 + 3.8 = 4.8
    
    bool + complex
    res = True + 3-90j  # 1+0j + 3-90j => 4-90j
    
    int + float
    res = 4 + 4.1  		# 4.0+4.1 = 8.1
    
    int + complex
    res = 5 + 4-90j 	# 9-90j
    
    float + complex
    res = 4.3 + 5 - 3j  #4.3+5.0-3j = 9.3-3j
    

容器类型的强制转换

  • str list tuple set dict bool , str 可以转换所有的数据类型

var1 = "李文汇"
var2 = ["张永建","徐汇","张士宇"]
var3 = ("张永建","徐汇","张士宇")
var4 = {"张永建","徐汇","张士宇"}
var5 = {"风流倜傥,英俊潇洒,放荡不羁":"张永建","水性杨花":"徐汇","正义凛然,方方正正":"张士宇"}
var6 = 12345
  • 强制转换成 str

    可以转换所有的数据类型,就是单纯在原数据类型的两边套上引号就是字符串
    res = str(var6)
    res = str(var5)
    
    # repr => 元字符串 r"e:sdf\sdf" 不转移,原型化输出,显示引号
    
    res = repr(res)
    print(res , type(res))
    
  • 强制转换成 list

    如果是字符串,把字符串中的每个元素拿出来,作为列表的新元素
    如果是字典,保留所有字典的键
    如果是其他数据,就是单纯的在原数据类型的两边换上中括号[]
    lst = list(var1)       # ['李', '文', '汇']
    lst = list(var3)       # ['张永建', '徐汇', '张士宇']
    lst = list(var5)       # ['风流倜傥,英俊潇洒,放荡不羁', '水性杨花', '正义凛然,方方正正']
    print(lst , type(lst))
    
  • 强制转换成 set

    如果是字符串,把字符串中的每个元素拿出来,作为集合的新元素  [无序,自动去重]
    如果是字典,保留所有字典的键
    如果是其他数据,就是单纯的在原数据类型的两边换上花括号{}
    setvar = set(var1)    
    setvar = set(var2)
    setvar = set(var5)
    print(setvar , type(setvar))
    
  • 强制转换成 tuple

    如果是字符串,把字符串中的每个元素拿出来,作为元组的新元素
    如果是字典,保留所有字典的键
    如果是其他数据,就是单纯的在原数据类型的两边换上圆括号()
    tup = tuple(var5)      # ('风流倜傥,英俊潇洒,放荡不羁', '水性杨花', '正义凛然,方方正正')
    print(tup , type(tup))
    
  • 括号里面不写数据,默认返回一个假值;

    float complex() bool() str() list() tuple() set() dict()
    res = dict() 
    print(res)
    

转换成字典

  • 二级容器 列表 元组 集合 字典

    二级列表
    listvar = [1,2,3,[4,5,6]]
    
    二级元组
    tuplevar = (1,2,3,(4,5))
    
    二级集合
    setvar = {'a','b',(1,23)}
    
    二级字典
    dictvar = {  "a":1,"b":{"c":3}  }
    
  • 四级容器
    container = [1,2,3,4,(5,6,7,8,{"a":1,"b":2,"c":[1,2,"bingo"]})]
    

    如何获取bingo字符串

    res = container[-1]
    print(res)     # (5, 6, 7, 8, {'a': 1, 'b': 2, 'c': [1, 2, 'bingo']})
    
    res2 = res[-1]
    print(res2)    # {'a': 1, 'b': 2, 'c': [1, 2, 'bingo']}
    
    res3 = res2["c"]
    print(res3)    # [1, 2, 'bingo']
    
    res4 = res3[-1]
    print(res4)    # ['bingo']
    
    简化代码
    res = container[-1][-1]["c"][-1]
    print(res)
    
  • 等长的二级容器

    里面的元素是容器,并且容器里面的元素个数相同就是等长的二级容器

    container = [(1,4,43),[11,7,10]]

  • dict 强转:需要等长的二级容器,并且容器里面的元素个数得是2个

    外层是列表,内层是 列表/元组
    container = [["a",1] , ("b",2)]
    
    外层是元组,内层是列表/元组
    container = (["c",1],("d",4))
    
    外层是集合,内层是元组
    container = {("f",10),('e',20)}
    dictvar = dict(container)
    print(dictvar , type(dictvar))  # {'e': 20, 'f': 10}
    
    在里面放元组,什么情况都好使
    
    例外情况 (不推荐)
    集合无序,导致不符合原意(不推荐)
    container = [{"a",1},{"b",2}]
    dic = dict(container)
    print(dic , type(dic))
    
    字符串的长度必须是2位,有极大局限性(不推荐)
    container = (["a",1],"c3")
    # container = (["a",1],"c333") error
    dic = dict(container)
    print(dic , type(dic))
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值