zoukankan      html  css  js  c++  java
  • Python容器类型数据的转换

    容器类型的强制转换

    str强制将数据转换成字符串

    str可以转换所有的数据类型, 在当前的数据类型两边套上引号

    var = [1, 2, 3]
    res = str(var)
    # 结果:'[1, 2, 3]' <class 'str'>
    print(repr(res), type(res))
    

    repr():原型化输出字符串

    list强制将数据转换成列表

    • 如果原数据类型是字符串:把字符串中的每个元素单独拿出来,作为列表中的新元素使用
    • 如果原数据类型是字典:只保留字典中的键,忽略字典的值
    • 如果原数据类型是其他容器数据:直接在原数据类型两边换上[]
    var = "abc123"
    res = list(var)
    # 结果:['a', 'b', 'c', '1', '2', '3'] <class 'list'>
    print(res, type(res))
    
    var = {"a": 1, "b": 2, "c": 3}
    res = list(var)
    # 结果:['a', 'b', 'c'] <class 'list'>
    print(res, type(res))
    
    var = (123,456,"abc")
    res = list(var)
    # 结果:[123, 456, 'abc'] <class 'list'>
    print(res, type(res))
    

    tuple强制将数据转换成元组

    • 如果原数据类型是字符串:把字符串中的每个元素单独拿出来,作为元组中的新元素使用
    • 如果原数据类型是字典:只保留字典中的键,忽略字典的值
    • 如果原数据类型是其他容器数据:直接在原数据类型两边换上()
    var = "abc123"
    res = tuple(var)
    # 结果:('a', 'b', 'c', '1', '2', '3') <class 'tuple'>
    print(res, type(res))
    
    var = {"a": 1, "b": 2, "c": 3}
    res = tuple(var)
    # 结果:('a', 'b', 'c') <class 'tuple'>
    print(res, type(res))
    
    var = {123,456,"abc"}
    res = tuple(var)
    # 结果:(456, 123, 'abc') <class 'tuple'>
    print(res, type(res))
    

    set强制将数据转换成集合

    • 如果原数据类型是字符串:把字符串中的每个元素单独拿出来,作为集合中的新元素使用
    • 如果原数据类型是字典:只保留字典中的键,忽略字典的值
    • 如果原数据类型是其他容器数据:直接在原数据类型两边换上{}
    var = "abc123"
    res = set(var)
    # 结果:{'3', '2', 'c', 'a', '1', 'b'} <class 'set'>
    print(res, type(res))
    
    var = {"a": 1, "b": 2, "c": 3}
    res = set(var)
    # 结果:{'c', 'a', 'b'} <class 'set'>
    print(res, type(res))
    
    var = [123,456,"abc"]
    res = set(var)
    # 结果:{456, 123, 'abc'} <class 'set'>
    print(res, type(res))
    

    扩展

    强转空数据时,默认转换成当前数据类型的一个值

    res = ()
    # 结果:() <class 'tuple'>
    print(res, type(res))
    

    dict强制将数据转换成字典

    • 要求: 必须是等长的二级容器,并且里面的元素个数只能是2个
    • 外层可以是列表,元组或集合,里层是列表或者元组的等长二级容器

    外层是列表

    # 外层是列表,里层是列表或者元组
    lst = [["a", 1], ("b", 2)]
    dic = dict(lst)
    # 结果:{'a': 1, 'b': 2} <class 'dict'>
    print(dic, type(dic))
    

    外层是元组

    # 外层是元组,里层是列表或者元组
    tup = (["a", 1], ("b", 2))
    dic = dict(tup)
    # 结果:{'a': 1, 'b': 2} <class 'dict'>
    print(dic, type(dic))
    

    外层是集合

    # 外层是集合,里层是元组
    setvar = {("a", 1), ("b", 2)}
    dic = dict(setvar)
    print(dic, type(dic))
    # 结果1:{'a': 1, 'b': 2} <class 'dict'>
    # 结果2:{'b': 2, 'a': 1} <class 'dict'>
    

    集合的特征:无序,自动去重
    字典的键和集合的值有数据类型上的要求:
      不可变的类型(允许的类型范围):Number(int、float、complex、bool)、str、tuple
      可变的类型(不允许的类型):list、set、dict

    例外1

    """
    外层是列表或元组,里层放集合
    
    可以实现,但不推荐使用,
    因为集合无序,达不到想要的目的
    """
    lst = [["a", 100], {"b", "250"}]
    dic = dict(lst)
    print(dic)
    # 结果1:{'a': 1, 'b': '250'}
    # 结果2:{'a': 1, '250': 'b'}
    

    例外2

    """
    外层是列表,元组或集合,里层放字符串
    
    字符串长度只能是2位,有极大的局限性,不推荐使用
    """
    lst = ["a1","b2"]
    # lst = ["a11","b22"]      #Error 
    dic = dict(lst)
    # 结果:{'a': '1', 'b': '2'}
    print(dic)
    

    扩展:等长二级容器

    外面是容器,里面的元素也是容器,且元素个数相同

    lst = [(1, 2, 3), [4, 5, 6], {7, 8, 9}]
    

    类型判断

    使用方法一

    isinstance(数据,类型)

    • 如果该数据是这个类型,返回True
    • 反之,返回False
    • 类型: int、float、complex、bool、str、list、tuple、set、dict
    n = 123
    res = isinstance(n, int)
    print(res)      # True
    
    n = "123"
    res = isinstance(n, int)
    print(res)      # False
    

    使用方法二

    isinstance( 数据, (类型1,类型2,类型3...) )

    • 如果该数据在所对应的类型元组当中,返回True
    • 反之,返回False
    • 类型: int、float、complex、bool、str、list、tuple、set、dict
    n = 123
    res = isinstance(n, (float, complex, int))
    print(res)      # True
    
    n = "123"
    res = isinstance(n, (float, complex, int))
    print(res)      # False
    

    数据类型判断:一真则真,全假则假

  • 相关阅读:
    利用Python进行数据分析笔记-时间序列(时区、周期、频率)
    形象易懂讲解算法I——小波变换
    小波变换与傅里叶变换的区别
    Thinkpad E550 开启 Legacy Only
    Thinkpad E550 开启 虚拟化
    常见音频接口
    IAR embedded Workbench for ARM 8.32.1 安装包
    stm32f767 无操作系统 LwIP 移植 (一)
    stm32f767 无操作系统 LwIP 移植 (二)
    北京市电力公司
  • 原文地址:https://www.cnblogs.com/kangyz/p/13859568.html
Copyright © 2011-2022 走看看