Python基础数据类型补充

基础数据类型补充内容

字符串

点击这里跳转

元组

  • Python元组有一个特性,元组中如果只含有一个元素且没有逗号,该数据类型不是元组,与该元素数据类型一致

    tu = ('yue')
    print(tu, type(tu))
    # 'yue' <class 'str'>
    ​
    tu = ('yue',)
    print(tu, type(tu))
    # ('yue',) <class 'tuple'>
  • 元组也有一些其他方法

    • index:通过元素找索引(可切片),找到第一个元素就返回,找不到该元素就报错

      tu = ('nayue', 'cat', 'de', 'xin')
      tu.index('nayue') # 0
    • count:获取某元素在列表中出现的次数

      tu = ('cat', 'na', 'cat')
      tu.count('cat') # 2

列表

  • 例:

    # 现有列表
    ls1 = [11, 22, 33, 44, 55, 57, 58]
    # 请把索引为奇数对应的元素删除
    # 坑 如果循环判断索引删除的话,每删除一位,列表元素会前进一位
    # 直接删除
    del ls1[1::2]
    # 倒序删除
    None
    # 思维置换
    None

    在循环一个列表过程中,如果你要改变列表的大小(增加值,或者删除值),那么结果很可能出错或报错

字典

  • update

    dic = {'name': 'yue', 'sex': 'girl'}
    dic.update(height = 174, age = 18)
    print(dic)
    # {'name': 'yue', 'sex': 'girl', 'height': 174, 'age': 18}
    ​
    dic = {'name': 'yue', 'sex': 'girl'}
    dic.update([('one',1),('two',2),('three',3)])
    print(dic)
    # {'name': 'yue', 'sex': 'girl', 'one': 1, 'two': 2, 'three': 3}
    # 拥有相同key的修改,不同的增加
    dic1 = {'name': 'yue', 'sex': 'girl'}
    dic2 = {'name': 'cat', 'hobby': 'man'}
    dic1.update(dic2)
    print(duc1)
    # {'name': 'cat', 'sex': 'girl', 'hobby': 'man'}
  • 字典的循环

    # 现有字典
    dic = {'name1': 'cat', 'name2': 'yue', 'hobby': 'man'}
    # 请把所有key中带"name"的删除
    for k in dic:
        if 'name' in k:
            del dic['k']
    print(dic)
    # RuntimeError: dictionary changed size during iteration
    错误原因:字典在循环迭代时,改变了大小

    在循环一个字典的过程中,不要改变字典的大小(增删字典的元素),这样会直接报错

数据类型的转换问题

  • int bool str 三者转换
    # int ---> bool
    print(bool(100))    # True 非零即True
    print(bool(0))      # False 零即False
    # bool ---> int
    print(int(True))    # 1  True --> 1
    print(int(False))   # 0  False --> 0
    # int ---> srt
    print(str(100))     # '100'
    # str ---> int  全部由数字组成的字符串才可以转换成数字
    print(int('88'))    # 88
    # str ---> bool
    print(bool('yue'))  # True 非空即True
    print(bool(''))     # False
    # bool ---> str
    print(str(True))    # True
  • str list 两者转换
    # str ---> list
    s1 = 'yue jin nain'
    print(s1.split()) # ['yue', 'jin', 'nain']
    # list --> str
    l1 = ['yue', 'jin', 'nain']
    print(' '.join(l1)) # 'yue jin nain'
  • list set 两者转换
    # list ---> set
    print(set([1,2,3]))  # {1, 2, 3}
    # set ---> list
    print(list({1,2,3})) # [1, 2, 3]
  • str bytes 两者转换
    # str ---> bytes
    s1 = '那月'
    print(s1.encode('utf-8')) # b'\xe9\x82\xa3\xe6\x9c\x88'
    # bytes ---> str
    b1 = b'\xe9\x82\xa3\xe6\x9c\x88'
    print(b1.decode('utf-8')) # 那月
  • 所有的数据都可以转换为bool值
    # 转换为bool值得False的数据类型有
    '', 0, (), {}, [], set(), None

基础数据类型的总结

  • 按存储空间的占用分(从低到高)

    数字
    字符串
    集合:无序,即无需存索引相关信息
    元组:有序,需要存储索引相关信息,不可变
    列表:有序,需要存储索引相关信息,可变,需要处理数据的增删改
    字典:无序,需要存储key与value的相关信息,可变需要处理数据的增删改(3.6之后有序)
  • 按存值个数区分

    区分类型数据类型
    标量/原子类型 数字,字符串
    容器类型 列表,元组,字典
  • 按可变不可变区分

    区分类型数据类型
    可变 列表,字典
    不可变 数字,字符串,元组,布尔值
  • 按访问顺序区分

    区分类型数据类型
    顺序访问(序列类型) 字符串,列表,元组
    key值访问(映射类型) 字典

     

编码的进阶

  • 编码的回顾

    • ASCII码:包含英文字母,数字,特殊字符与01010101对应关系。

    • GBK:只包含本国文字(以及英文字母,数字,特殊字符)与0101010对应关系。

    • Unicode包含全世界所有的文字与二进制0101001的对应关系。

    • UTF-8:包含全世界所有的文字与二进制0101001的对应关系(最少用8位一个字节表示一个字符)。

  • 知识点普及

    • 在计算机内存中,统一使用Unicode编码,当需要将数据保存到硬盘或者需要网络传输的时候,就转换为非Unicode编码比如:bytes。

      • bytes类型也称作字节文本,他的主要用途就是网络的数据传输,与数据存储。
    • 不同编码之间,不能直接互相识别。

posted @ 2018-12-23 16:36  CatdeXin  阅读(214)  评论(0)    收藏  举报