集合与内存

  1. 集合 set
  • 无序

  • 无重复

    v = {1,2,3,4,5,6,99,100}

    疑问:v = {}

    """
    None
    int
    v1 = 123
    v1 = int() --> 0
    bool
    v2 = True/False
    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 #取差集
    • symmetric_difference
  2. 公共功能

    • len
      v = {1,2,'李邵奇'}
      print(len(v))
    • for循环
      v = {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 = {0, 2, 3, 4, False, "国风", None, (1, 2, 3)}
    # print(info)
    
    # info = {
    #     1:'alex',
    #     True:'oldboy'
    # }
    # print(info)
    
  4. 内存相关

  • 示例一
    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 asdf d_asdf '       ----"f_*" * 3  - 重新开辟内存。
    
  • 示例二:
    v1 = [11,22,33,44]
    v1 = [11,22,33]

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

    # 练习1 (内部修改)
    v1 = [11,22,33]
    v2 = v1 
    v1.append(666)
    print(v2) # 含 666
    
    # 练习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) # [1, 2, 3, 999]
    """
    # 练习3:
    """
    v = 999
    print(values) # [11, 22, [1, 2, 3]]
    """
    # 练习4:
    values[2] = 666
    print(v) # [1, 2, 3]
    
  • 示例五
    v1 = [1,2]
    v2 = [2,3]

    v3 = [11,22,v1,v2,v1]
    
  • 查看内存地址
    """
    v1 = [1,2,3]
    v2 = v1
    v1.append(999)
    print(v1,v2)
    print(id(v1),id(v2))
    """

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

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

走你今儿

  • 列表
    • reverse
    • sort
  • 字典
    • get (*)
    • update
  • 集合
    • add
    • discard
    • update
    • intersection (*)
    • union
    • difference
    • .....
  • 特殊:
    • 嵌套:集合/字典的key
    • 空:None
    • 空集合:...
  • id
  • type
  • 嵌套的应用: (*)
    • 赋值
    • 修改内部元素:列表/字典/集合
posted @ 2024-03-06 21:05  jhchena  阅读(3)  评论(0编辑  收藏  举报