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 查看值的类型
  • 嵌套的应用: (*)
    • 赋值
    • 修改内部元素:列表/字典/集合
原文地址:https://www.cnblogs.com/yzwone/p/12246416.html