zoukankan      html  css  js  c++  java
  • python全栈day6

    day06 数据类型(四)

    今日内容

    • 集合
    • 内存相关
    • 深浅拷贝

    内容回顾&补充

    • 所有数据类型里边 空的 转布尔 都是False
    1. 内容回顾

    2. 补充

      • 列表

        • reverse,反转

          v1 = [1,2,34,534,13]
          print(v1)
          v1.reverse()
          print(v1)
          
        • sort,排序 reverse = False 是从小到大,reverse = Ture是从大到小

          v1 = [1,2,34,534,13]
          print(v1)
          v1.sort(reverse=False)  # 从小到大排序 (默认)
          v1.sort(reverse=True)  # 从大到小排序
          print(v1)
          
      • 字典

        • keys,values,items

        • get

          info = {"k1":"v1","k2":"v2"}
          #
          # # v1 = info["k22222222"]
          # # v2 = info.get("k34434",666)
          # v2 = info.get("k34434")  # None就是python中的空
          # print(v2)
          # None数据类型,该类开表示空(无任何功能,专门用于提供空值)
          
        • pop

          info = {"k1": "v1", "k2": "v2"}
          result = info.pop("k2")
          print(info, result)
          
        • update

          # # 不存在,则添加,丛存在则更新
          # info = {"k1": "v1", "k2": "v2"}
          # info.update({"k3": "v3", "k2": "32444234"})
          # print(info)
          
      • 判断一个字符串中是否有敏感字符?

        • str

          v = "Python全栈21期"
          if "全栈" in v:
              print("含铭感字符")
          
        • list/tuple

          v = ["alex","oldboy", "canglaoshi","liqihang"]
          "liqihang" in v:
              print("zai")
          
        • dict

          v = {"k1":"v1","k2":"v2","k3":"vv","k4":"v4"}
          
          # 默认按键判断,即:判断X是否是字典的键
          # 判断 k1 是否在其中?
          if "k1" in v:
              pass
          # 判断 v2 是否在其中?
          # if "v2" in v.values:
          #    pass
          
          # 方式一:循环判断
          flag = "不存在"
          for v in v.values():
              if v =="v2":
                  flag = "存在"
          print(flag)
          
          # 方式二:
          # list(v.values()) # 强制转成列表 ["v1","v2","v3","v4"]
          if "v2" in list(v.values())
          	pass
          # 判断 k2:v2 是否在其中 ?  (不能直接判断)
          value = v.get("k2")
          if value == "v2":
              print("存在")
          else:
              print("不存在")
          
        • 练习题

          # 让用户输入任意字符串,然后判断是否包含指定的敏感字符。
          char-list = ["李绮上","唐有光","杂杂汇"]
          content = input("请输入内容:")
          
          success = True
          for v in char_list:
              if v in contet:
                  success = False
                  break
          if success:
              print(content)
          else:
              print("包含敏感字符")
              
          # 示例
          # 1. 昨天课上最后一题
          # 2. 判断 “v2” 是否在字典的value [循环判断]
          # 3. 敏感字
          

    内容详细

    1. 集合set

    • 无序
    • 无重复
    v = {1,2,3,4,5,6,55,88}
    
    # 疑问 v = {}
    
    """
    None
    int
        v1 = 123
        v1 = int() -> 0
    bool
        v2 = True
        v2 = bool() ->False
    str
        v3 = ""
        v3 = str()
    list
        v4 = []
        v4 = list()
    tuple
        v5 = ()
        v5 = tuple()
    dict
        v6 = {}
        v6 = dict()
    set
        v7 = set()
    """
    
    1. 集合独有功能

      • add
      • discard
      • update
      • intersection
      • union
      • difference
      • systemmetric_difference
      • 注意:1 . 求集函数要生成新的值接收;2.求集函数后边传的值可以是(集合、列表、元组)
    2. 公共功能

      • len

        # v = {'lishaoqi', 1, 2}
        # print(len(v))
        
      • for

        v = {'lishaoqi', 1, 2}
        for item in v:
            print(item
        
      • 索引【无】

      • 步长【无】

      • 切片【无】

      • 删除【无】

      • 修改 【无】

    3. 嵌套问题

      # 1.列表/字典/集合 -> 不能入在集合中 + 不能作为字典的key (unhashable)
      # info = {1, 2, 3, 4, True, "国风", None,(1,2,3)}
      # print(info)
      
      # 2. hash -> 哈希是怎么回事?
      # 因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。
      
      # 3. 特殊情况
      # info = {1, 2, 3, 4, True, "国风", None,(1,2,3)}
      # print(info)
      
      # info = {1:"alex",
      #         True:"oldboy"
      #         }
      # print(info)
      

    2. 内存相关

    • 示例一:

      v1 = [11,22,33]
      v2 = [11,22,33]
      
      v1 = 666
      v2 = 666
      
      v1 = "asdf"
      v2 = "asdf"
      
      # 按理 v1 和 v2 应该是不同的内存地。特殊:
      1. 整型: -5 ~ 256
      2. 字符串:"alex","asfasd asdf sfdsd d_dsfsaf"        --------"f_*" * 3  - 重新开辟内存
      
    • 示例二:

      v1 = [11,22,33,44]
      v2 = [11,22,33]
      
    • 示例三:

      v1 = [11,22,33]
      v2 = v1
      
      # 练习1(内部修改)
      v1 = [11,22,33]
      v2 = v1
      v1.append(666)
      print(v2)
      
      # 练习2(重新赋值)
      v1 = [11,22,33]
      v2 = v1
      v1 = [1,2,3,4]
      print(v2)
      
      # 练习3(重新赋值)
      v1 = "alex"
      v2 = v1
      v1 = "oldboy"
      print(v2)
      
    • 示例四

      v = [1,2,3]
      values = [11,22,v]
      
      # 练习1:
      v.append(9)
      print(values) # [11,22,[1,2,3,9]]
      
      # 练习2:
      values[2].append(999)
      print(v)
      
      # 练习3:
      v = 999
      print(values) # [11, 22, [1, 2, 3]]
      
      # 练习4:
      values[2] = 666
      print(v)
      
    • 示例五:

      v1 = [1,2]
      v2 = [2,3]
      v3 = [11,22,v1,v2,v1]
      
      
      
    • 查看内存地址: id

      """
      v1 = [1,2,3]
      v2 = v1
      v1.append(999)
      print(v1,v2)
      print(id(v1),id(v2))
      """
      
      v1 = [1,2,3]
      v2 = v1
      v1 = 999
      print(v1,v2)
      print(id(v1),id(v2))
      
    • 问题: == 和is有什么区别?

      • == 用于比较值是否相等

      • is 用于比较内存地址是否相等


    今日总结

    • 列表
      • reverse
      • sort
    • 字典
      • get(*)
      • update
    • 集合
      • add
      • discard
      • update
      • intersection (*)
      • union
      • difference
      • ……
    • 特殊:
      • 嵌套:集合/字典 key
      • 空:None
      • 空集合:set()
    • id 查看值的内存地址
    • type 查看值的类型
    • 嵌套的应用: (*)
      • 赋值
      • 修改内部元素:列表/字典/集合
  • 相关阅读:
    文件操作
    字典的相关函数
    列表相关操作/列表的相关函数
    字符串相关操作/字符串相关函数
    局部变量 与 全局变量
    函数名的使用
    函数的返回值 return
    命名关键字
    收集参数
    默认形参 与 关键字实参的区别
  • 原文地址:https://www.cnblogs.com/yzwone/p/12246416.html
Copyright © 2011-2022 走看看