zoukankan      html  css  js  c++  java
  • 类型与运算五

    一、数据类型补充

    ​ 主要针对之前学过的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)
    

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

  • 相关阅读:
    Python深入03 对象的属性
    利用Webkit抓取动态网页和链接
    分享:OCILIB 3.11.0 发布,跨平台 Oracle 驱动
    Knockoutjs实战开发:控制子绑定(control descendant bindings)
    利用InjectedBundle定制自己的Webkit(二)
    使用solrj和EasyNet.Solr进行原子更新
    Chaos网络库(二) Buffer的设计
    分享:djangohaystack+solr实现搜索
    Moon.ORM 4.4 隆重发布,在性能和使用便捷上一挑群雄(mysoft,cyq,pdf)
    数据结构利器之私房STL(中)
  • 原文地址:https://www.cnblogs.com/yaoqi17/p/11010410.html
Copyright © 2011-2022 走看看