zoukankan      html  css  js  c++  java
  • 六、集合

    集合(set)

    特性

    • 集合是无序的序列

    • 本身是可变的数据类型

    • 集合的元素必须唯一,元素包括元素内部也必须为不可变数据类型

    作用

    • 删除重复数据:转集合自动去重
    • 关系测试:交集、并集、差集、...

    创建

    s1 = set({1, 2, 3})		# {1, 2, 3}
    s2 = {1, 2, 3}			# {1, 2, 3}
    s3 = set()				# 设置空集合
    

    增删改查

    增加:set.add(元素)

    迭代增加:set.updata(元素)

    指定元素删除:set.remove(元素)(元素不存在报错)

    指定元素删除:set.discard(元素)(元素不存在不报错)

    随机删除:set.pop(元素)

    清空:set.clear(元素)

    :先删除再增加

    :for循环


    关系测试

    s1 = {1, 2, 3}
    s2 = {2, 3}

    交集:取两者重复的元素 (s1 & s2) # {2,3}

    并集:交集加两者独有的元素 (s1 | s2) # {1,2,3}

    差集:减去交集,剩自己独有的元素 (s1 - s2) # {1}

    反交集:去掉交集,剩两者独有的元素 (s1 ^ s2) # {1}

    超集与子集:判断是否完全包含或属于另一个集合 (s1 > s2) # T


    id is

    • id:数据在内存中的地址号,内存地址号都是随机的

    获取对象的内存地址:id(对象)

    • is:判断内存地址是否相同

    两个相同的值,不可变数据类型内存地址相同,可变数据类型内存地址不同

    s1 = 'hi'
    s2 = 'hi'
    print(s1 is s2)         # T
    l1 = [1, 2, 3]
    l2 = [1, 2, 3]
    print(l1 is l2)         # F
    

    代码块

    代码是基于代码块运行的

    • 一个文件就是一个代码块
    • 交互式命令一行就是一个代码块

    代码缓存机制

    目的:提升性能,节省内存空间

    机制:创建变量先检查内存中有无此数据,没有就创建,如果有则满足以下条件将复用:

    • 同一代码块:intboolstr(几乎所有)

    • 不同代码块(小数据池):int 中 -5 ~ 256 的数、boolstr(满足一定规则)


    深浅Copy

    l1 = [1, 2, 3, [22, 33]]

    • 浅Copy:在内存中创建相同值对象为新id,其中元素id全部复用(可变元素内部改变id不变)
    l2 = l1.copy()			# 方法一
    import copy				# 方法二
    l3 = copy.copy(l1)
    
    • 深Copy:在内存中创建相同值对象为新id,其中不可变的元素id复用,可变的元素创建新id
    import copy        		# 引用模块
    l2 = copy.deepcopy(l1)
    

  • 相关阅读:
    专利质检助手
    商务代表 销售 区别
    javax.servlet.jsp.tagext.TagAttributeInfo.<init> tomcat-embed-core-8.0.35
    poli-java开源BI软件
    QFLOW ECM软件 政府机构 自动化工作流程 文件管理
    Devops Tools
    吴军博士的新书《见识》
    轻流 CEO 薄智元 BPM (SaaS aPaaS) 低(无)代码平台 乐高积木
    北京 知识产权 交易中心
    Java高并发秒杀API系列
  • 原文地址:https://www.cnblogs.com/wzos/p/12555560.html
Copyright © 2011-2022 走看看