day7 数据类型的补充 重点哦

01 今日内容大纲

1.数据类型的补充python

2.数据类型之间的转化api

3.编码的进阶网络

02 昨日内容回顾

1.is id ==app

  • == 比较的是数值是否相等
  • is 比较的是内存地址是否相同
  • id 获取对象的内存地址
    • 内存地址相同,数值必定相同
    • 数值相同,内存地址不必定相同

2.代码块:(文件,函数,模块,类)函数

  • 同一代码块下,遵循一个机制,有缓冲机制(字符串驻留机制)
    • 适用:全部数字 几乎全部字符串
      • 初始化建立变量的时候,先检查字典中有无改值,有的话直接会将其重复使用,无的话建立
  • 不一样代码块下,遵循另外一个机制
    • 适用:(小数据池 -5-256) 必定规律的字符串
      • 在内存中开辟两个空间 ,一个空间存储-5-256的int,另外一个空间存储必定规律的字符串,若是你的代码中遇到知足条件的数据,直接引用提早建立的
  • 优势:两个都适用:节省内存,提高性能

3.set集合性能

  • set = set({})测试

  • set = {}编码

  • 列表去重code

  • 关系测试对象

    • 交集
    • 并集
    • 差集
    • 子集
    • 超集。。。。

4.深浅copy

  • 浅copy:在内存中开辟一个新的空间存放copy对象(列表,字典)可是里面的全部的元素与被copy对象的里面的元素公用一个
    • copy自己原有的,里面有可变化的列表,字典也要copy
  • 深copy:在内存中开辟一个新的空间存放copy对象(列表,字典)可是里面的全部的元素与被copy对象的里面的元素延用以前的
    • copy自己原有的,里面有可变的列表,字典也不copy

03 具体内容

  • 数据类型的补充

    • str

      • 首字母大写,其他的小写:

        # s = 'tai1 BAi'
        # print(s.capitalize())
      • 大小字母反转

        # s = 'tai1 BAi'
        # print(s.swapcase())
      • 非字母之间隔开的,首字母都大写,其他的小写

        # s = 'tai1 BAi'
        # print(s.title())
      • 内同居中,总长度,空白处填充

        # s = 'tai1 BAi'
        # print(s1.center(20))
        # print(s1.center(20,'*'))
    • 元组:元组中若是只有一个元素且没有逗号,那么该元素和数据类型一致

    • 列表:循环一个列表时,最好不要改变列表的大小,这样会影响最终的结果

      # 列表升序   降序   反转
      # list = [1,2,3,1]
      # list.sort()
      # # list.sort(reverse=True)
      # list.reverse()
      # print(list)
    • 字典 update 有则改之,无则加之

      # dic = {'name': '魔童', 'age': 18}
      # dic.update(name='魔童1号',hight='175')
      # # print(dic)
      # dic = {'name': '魔童', 'age': 18}
      # dic1 = {'name':'魔童1号','hobby':'美女'}
      # dic.update(dic1)
      # fromkeys
      # dic = dict.fromkeys('abc','魔童')
      # dic = dict.fromkeys([1,2,3],[])             # {1: [], 2: [], 3: []}
      # dic[1].append(66)							# # {1: [66], 2: [66], 3: [66]}
      # print(dic)
  • 数据类型的转换

    • 其余的以前讲过,下面的是今天讲的
    # str - bytes
    s = '中国'
    b = s.encode('utf-8')  # 编码        #  b'\xe4\xb8\xad\xe5\x9b\xbd'
    # print(a)
    print(b)
    # bytes - str   
    b = b'\xe4\xb8\xad\xe5\x9b\xbd'  # 解码
    s = b.decode('utf-8')
    print(s)

    转化成bool值为False的数据类型有:
    '', 0, (), {}, [], set(), None

  • 数据类型的分类(了解)

  • 编码的进阶

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

        a 01000001 一个字符一个字节表示。

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

      a 01000001 ascii码中的字符:一个字符一个字节表示。

      中 01001001 01000010 中文:一个字符两个字节表示。

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

      a 01000001 01000010 01000011 00000001

      b 01000001 01000010 01100011 00000001

      中 01001001 01000010 01100011 00000001

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

      a 01000001 ascii码中的字符:一个字符一个字节表示。

      To 01000001 01000010 (欧洲文字:葡萄牙,西班牙等)一个字符两个字节表示。

      中 01001001 01000010 01100011 亚洲文字;一个字符三个字节表示。

    1. 不一样的密码本可否互相识别? 不能

    2. 文字和数据在内存中所有是以Unicode编码的,可是你的数据用于网络传输或者存储到硬盘中,必须是以非Unicode编码(utf-8,gbk等)

      英文:

      ​ str :'hello'

      ​ 内存中编码方式:Unicode

      ​ 表现形式:'hello'

      ​ bytes:

      ​ 内存中编码方式:非Unicode

      ​ 表现形式:b'hello'

      中文:

      ​ str :'中国'

      ​ 内存中编码方式:Unicode

      ​ 表现形式:'中国'

      ​ bytes:

      ​ 内存中编码方式:非Unicode # utf-8

      ​ 表现形式:b'hello'

04 今日总结

  • 数据类型的补充:list(sort reverse 列表的加 * 循环问题) dict (updat 循环)

  • 编码的进阶:bytes类型的存在乎义 str - bytes(Unicode - 非Unicode)

    gbk - utf-8 **** 要转化为Unicode再去转换

本站公众号
   欢迎关注本站公众号,获取更多信息