zoukankan      html  css  js  c++  java
  • 190321集合

    一、集合

    1. 由不同元素组成(去重的特性)
    2. 是无序的
    3. 集合中只能存放不可变类型的元素(数字、字符串、元组)
    4. 集合可增加、删除,但是不能修改

    1、集合的定义

    • 使用大括号定义
    se = {1,2,3,4,5,"dongfei"}
    print(se,type(se))  #{1, 2, 3, 4, 5, 'dongfei'} <class 'set'>
    
    • 使用set定义
    se = set("dongfei")
    print(se,type(se))  #{'i', 'e', 'g', 'n', 'o', 'd', 'f'} <class 'set'>
    
    se2 = set(["hello","hello","world"])
    print(se2)  #{'world', 'hello'}
    

    2、集合的内置方法

    • add() 添加一个元素
    se3 = {1,2,3,4,5,"dongfei"}
    se3.add("hello")
    print(se3)  #{1, 2, 3, 4, 5, 'hello', 'dongfei'}
    
    • clear() 清空
    • copy() 浅拷贝
    • pop() 随机删除一个元素
    • remove() 指定删除一个元素,删除的元素不存在会报错
    se4 = {1,2,3,4,5,"dongfei"}
    se4.remove("dongfei")
    print(se4)  #{1, 2, 3, 4, 5}
    
    • discard() 指定删除一个元素,删除的元素不存在不会报错
    se5 = {1,2,3,4,5,"dongfei"}
    se5.discard("nono")
    print(se5)  #{1, 2, 3, 4, 5, 'dongfei'}
    
    • isdisjoint() 判断两个集合是否有交集,没有交集返回True
    se5 = {"aa", "bb", "cc"}
    se6 = {"dd", "ee"}
    print(se5.isdisjoint(se6))  #True
    
    • issubset() 判断是否是另一个集合的子集
    • issuperset() 判断是否另一个集合的父集
    se5 = {"aa", "bb", "cc"}
    se6 = {"cc", "bb"}
    print(se6.issubset(se5))  #True
    print(se5.issuperset(se6))  #Ture
    
    • update() 更新多个元素,接受可迭代的对象
    se5 = {"aa", "bb", "cc"}
    se6 = {"cc", "bb", "dd", "ee"}
    se5.update(se6)
    print(se5)  #{'bb', 'aa', 'cc', 'ee', 'dd'}
    

    3、集合关系运算(交、差、并、补)

    • 交集
    se5 = {"aa", "bb", "cc"}
    se6 = {"cc", "dd", "ee"}
    print(se5.intersection(se6))  #交集
    print(se5&se6)  #{'cc'}
    
    • 并集
    se5 = {"aa", "bb", "cc"}
    se6 = {"cc", "dd", "ee"}
    print(se5.union(se6))  #并集
    print(se5|se6)  #{'aa', 'ee', 'dd', 'cc', 'bb'}
    
    • 差集
    se5 = {"aa", "bb", "cc"}
    se6 = {"cc", "dd", "ee"}
    print(se5.difference(se6))  #差集
    print(se5-se6)  #{'aa', 'bb'}
    print(se6.difference(se5))  #差集
    print(se6-se5)  #{'ee', 'dd'}
    
    • 交叉补集(并集-交集)
    se5 = {"aa", "bb", "cc"}
    se6 = {"cc", "dd", "ee"}
    print(se5.symmetric_difference(se6))  #交叉补集
    print(se5^se6)  #{'bb', 'aa', 'dd', 'ee'}
    
    • xxx_update 求完集合运算后更新集合
    se5 = {"aa", "bb", "cc"}
    se6 = {"cc", "dd", "ee"}
    se5.intersection_update(se6)  #相当于se5 = se5&se6
    print(se5)  #{'cc'}
    print(se6)  #{'ee', 'cc', 'dd'}
    

    4、不可变集合的定义

    se = frozenset("hello")
    print(se)  #frozenset({'h', 'e', 'o', 'l'})
    
  • 相关阅读:
    linux 进程学习笔记-运行新进程
    linux 进程学习笔记-进程状态
    linux 进程学习笔记-进程调度
    linux 进程学习笔记-进程退出/终止进程
    linux 进程学习笔记-暂停进程
    linux 进程学习笔记-进程跟踪
    linux 进程学习笔记-等待子进程结束
    linux 进程学习笔记-进程pipe管道
    linux 进程学习笔记-named pipe (FIFO)命名管道
    linux 进程学习笔记-进程信号sigal
  • 原文地址:https://www.cnblogs.com/L-dongf/p/10581716.html
Copyright © 2011-2022 走看看