• 类型与运算五


    一、数据类型补充

    ​ 主要针对之前学过的str、list、tuple、dict等进行补充。

    1. 数据类型方法补充

      数据类型 方法 作用
      字符串str s.capitalize() 首字母大写
      s.title() 单词首字母大写
      s.swapcase() 大小写互换
      s.count("") 统计出现次数
      s.find("") 查找索引,找不到返回-1
      s.index("") 查找索引,找不到报错
      列表list s = "拼接项".join(lst) 遍历列表,把列表中的每一项用“拼接项”做拼接,生成字符串
      lst.count("查询的元素") 查询元素出现的次数
      lst.index("") 查找
      lst.sort() 升序排序
      lst.reverse() 翻转
      lst.sort(reverse=Ture) 降序
      字典dict dic.popitem() 随机删
      dic = dict.fromkeys( k , v ) 是一个类方法,用于创建新字典(通过第一个参数的迭代,与第二个参数组和成key:value),每一个value使用的是同一个内存地址
      元组tuple tu.count("查询的元素") 查询元素出现的次数
      tu.index("") 查找
    2. 数据类型转换

      字符串 -- 数字:字符串中必须都是十进制的数字

      数字 -- 字符串:直接转换

      列表 -- 字符串:''.join() -- 可迭代的对象中不能出现数字

      字符串 -- 列表:split

      除字典外,容器数据类型之间可以直接相互转换

    3. 数据类型小结

      int、str、bool、list、tuple、dict、set

      有序的有:int、str、bool、list、tuple

      无序的有:dict、set

      可变的有:list、dict、set

      不可变的有:int、str、bool、tuple

      访问方式:直接访问:int、bool、set

      ​ 顺序访问:str、list、tuple

      ​ 通过键访问:dict

    二、常见的坑

    1. 循环删除索引的时候,要倒序删除 否则会报错,或者结果不正确

      索引值是奇数的删除
      li = [1,2,3,4]
      for i in range(4):
          if i % 2 == 1:
              li.pop(i)   #会报错
      print(li)
      
      li = [1,2,3,4,5]   #[1,3,4,5]
      for i in range(4):
          if i % 2 == 1:
              li.pop(i)   #结果不对
      print(li)
      
      li = [1,2,3,4,5]
      for i in range(len(li)-1,-1,-1):
          if i % 2 == 1:
              li.pop(i)   #倒序删除  del li[i]也可以
      print(li)
      
      li = [1,2,3,4,5]		#添加新列表,循环新列表删除就列表
      new_li = []
      for i in range(len(li)):
          if i % 2 == 1:
              new_li.append(li[i])
      for em in new_li:
          li.remove(em)
      print(li)
      
      li = [1,2,3,4,5]
      del li[1::2]
      print(li)
      
    2. 循环添加列表元素的时候,会形成死循环

      li = [1,2,3,4]
      for i in li:
          li.append(i)
      print(li)
      
    3. 字典再循环的时候不能改变字典的大小

      dic = {"k1":"v1","k2":"v2","k3":"v3"}
      for i in dic:
          dic["k7"] = "1"		#会报错
      print(dic)
      
      li = []			#先定义一个列表 循环列表列表删除字典
      for i in dic:
          if i == "k1" or i == "k3":
              li.append(i)
      for em in li:
          dic.pop(em)
      print(dic)
      

    三、编码与解码

    1. 编码与解码(encode和decode)

    ​ unicode => utf-8

    s = "刘伟很皮" # 12个字节
    abc = s.encode("UTF-8")  # encode之后的结果是bytes类型  依然是原来的字符串
    print(abc)
    

    ​ utf-8 => unicode

    abc = b'xe5x88x98xe4xbcx9fxe5xbex88xe7x9axaf'
    s = abc.decode("UTF-8") # 解码。 用什么编码, 就用什么解码
    print(s)
    

    ​ 结论:用什么编码集编码, 就用什么编码集解码

  • 相关阅读:
    (七)策略模式详解
    (六)观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型)
    递归锁,死锁,使用递归锁解决死锁,信号量
    并发编程中的GIL锁(全局解释器锁)自己理解的他为啥存在
    线程了解以及创建线程的Threading模块中的部分方法
    进程 >> 互斥锁、队列与管道、生产者消费者模型
    进程比较基础的内容
    基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程
    网络基础 + 简易服务端和客户端
    单例模式
  • 原文地址:https://www.cnblogs.com/yaoqi17/p/11010410.html
Copyright © 2020-2023  润新知