七天学会Python基础-第三天2/2-对基础数据类型的补充

  1. 基础数据类型的补充

    • 字符串str补充方法(练习一遍即可)以下方法均不改变原来字符串

      • str1.capitalize(),将str1字符串的首字母进行大写,其余小写
      • srt1.swapcase(),将字符串的大小写进行反转
      • str1.title(),将字符产中的每个单词的首字母进行大写
      • str1.center(20,'*'),居中,将两端使用✳进行到20长度
      • str1.find('a'),在str1中查找a的索引,若有多个a,则找到第一个a就返回,找不到则返回-1
      • str1.index('a'),在str1中查找a的索引,若有多个a,则找到第一个a就返回,找不到则报错
    • 元组tuple的补充

      • 若创建元组时,括号内中有一个元素,则需要加一个逗号才会被识别为元组,否则括号会被识别为运算符,相当于去掉括号
      • tup1.count(3),计算元组中3出现的次数
      • tup1.index('a'),通过元素找索引,找到第一个就返回
    • 列表list补充

      • lst1.count('a'),pass
      • lst1.index('a'),pass
      • lst1.sort(reverse=True),排序,默认从小到大,加上参数(reverse=True)就是逆向排序,即从大到小
      • lst1.reverse(),翻转列表
      • lst1+lst2,将lst1和lst2进行合并,
      • lst1*3,将lst1列表中的元素复制3次,
      • 补充:循环删除列表索引为计数的元素
        1. del
        2. for 倒序
        3. 思维置换:将索引为复数的元素放到一个新的列表中
        4. 循环一个列表时,最好不要改变列表的大小,这样会影响最终效果
    • 字典dict的补充

      • dic1.update(),可以是增,改

        • dic1.update(hoby="运动",height="170"),增加键值对
        • dic1.update(name="新名字"),在这里,name在dic1中已经存在,所以此时进行的是更新操作。
        • dic1.update([(1,'a'),(2,'b'),(3,'c'),(4,'d')]),此语法底层使用的是元组的拆包,将元组第一个元素作为键,第二个元素作为值传入字典
        • dic1.update(dic2),将dic2合并入dic1,操作dic1若有相同键,则进行更新,没有相同键则进行添加(有则覆盖,无则添加)
      • dic1=dict.formkeys("abc",100),第一个参数为可迭代对象,作为键使用,第二个参数作为值使用,

        • 注意,值只有一个,而且三个键指向的都是同一个地址
      • 注意,在循环一个字典时,若改变字典的大小则会直接报错

        • 若想循环操作这个字典,则可以将想要操作的字典先放进一个列表,然后循环此列表对字典进行操作
        • 以下方法同样可以
        for key in list(dic.keys()):
            if 'k' in key:
                dic.pop(key)
        print(dic)
        
      • 按照占用空间占用分(从低到高)

        • 数字,字符串,集合,元组,列表,字典,
      • 按存值个数区分

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

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

        • 直接访问
          • 数字
        • 顺序访问(序列类型)
          • 字符串,列表,元组
        • key值访问(映射类型)
          • 字典
  2. 数据类型之间的转换

    • 前面加数据类型进行强制转换即可
    • 所有数据类型转化为bool位False的
      • 0,{},[],set(),'',None
  3. 编码的进阶

    • ASCII码:包含英文字母,数字,特殊字符,与0101010对应关系
      • 一个字符用一个字节表示
    • GBK:只包含本国文字(以及英文字母,数字,特殊字符)与0101010对应关系
      • 英文一个字符用一个字节表示
      • 中文一个字符用两个字节表示
    • Unicode:包含全世界所有文字与2进制0101001的对应关系
      • 一个字符用四个字节而表示
    • UTF-8:包含全世界所有的文字与二进制0101001的对应关系(最少用8位,一个字节表示一个字符)
      • 英文:一个字符用一个字节表示
      • 欧洲文字(葡萄牙,西班牙等)一个字符用两个字节表示
      • 亚洲文字,一个字符用三个字节表示
    • 数据在内存中全部是以Unicode编码的,除去bytes,但是当你的数据用于网络传输或者存储到硬盘中必须是以非Unicode编码(utf-8,gbk等等)。
      • content:'hello'
        • 内存中的编码方式:Unicode
        • 表现形式:hello
      • bytes:
        • 英文
          • 内存中的编码方式:非Unicode
          • 表现形式:b'hello '
        • 中文
          • 转换方法:str1.encode('utf-8')
          • 表现形式:b'\ex4\xb8\xad\xe5\x9b\xbd'
      • 规定:不能以Unicode方式直接进行传输,想要进行传输和存储必须先转化成一个特殊的数据类型:bytes然后进行存储
    • 编码与解码的应用
      • str->bytes,编码(为了将数据进行传输和存储),将字符串类型转换为bytes类型
        • s2=s1.encode('utf-8'),将s1通过encode方法进行编码
      • bytes->str,可以加载到内存中进行编辑,若解码使用的字符集和编码使用的字符集不同会报错,将bytes类型转换成str类型
        • s2=b1.decode("utf-8")
      • gbk->utf-8
        • 先转化成Unicode,再由Unicode转化成UTF-8
        • s=b1.decode("gbk")
        • b2=s.encode("utf-8")
posted @ 2021-05-18 00:04  double大博  阅读(84)  评论(0)    收藏  举报