zoukankan      html  css  js  c++  java
  • Python开发【第十篇】集合

    集合的运算

    & 交集
    | 并集
    - 补集
    ^ 对称补集
    < 子集
    > 超集

    例子:

    生成两个集合的并集

    s1 = {1,2,3}
    s2 = {2,3,4}
    s3 = s1|s2
    #结果{1,2,3,4}
    

    生成两个集合的交集

    s1 = {1,2,3}
    s2 = {2,3,4}
    s3 = s1&s2
    #结果{2,3}
    

    生成两个集合的补集

    s1 = {1,2,3}
    s2 = {2,3,4}
    s3 = s1 - s2
    #结果生成s1但不属于s2的所有元素的集合
    {1}
    

    生成两个集合的对称补集

    s1 = {1,2,3}
    s2 = {2,3,4}
    s3 = s1 ^ s2
    #结果{1,4}
    

    判断一个集合是另一个集合的子集

    s1 = {1,2,3}
    s2 = {2,3}
    s2 < s1
    #结果True
    s1 > s2
    #结果True
    

    集合比较没有比较谁比谁大,而是比较的是谁包含谁

    集合是不能比较大小的

    in和not in 也同样适用于集合

    集合和字典的有点:

    in 和not in 运算速度比较快

    能用于集合的内建函数

    len(x)
    max(x)
    min(x)
    sum(x)
    any(x)
    all(x)
    Python3 集合的方法
    方法 意义
    S.add(e) 在集合中添加一个新的元素e;如果元素已经存在,则不添加
    S.remove(e) 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
    S.discard(e) 从集合S中移除一个元素e,在元素e不存在时什么都不做;
    S.clear() 清空集合内的所有元素
    S.copy() 将集合进行一次浅拷贝
    S.pop() 从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常
    S.update(s2) 等同于 S
    S.difference(s2) S - s2 补集运算,返回存在于在S中,但不在s2中的所有元素的集合
    S.difference_update(s2) 等同于 S -= s2
    S.intersection(s2) 等同于 S & s2
    S.intersection_update(s2) 等同于S &= s2
    S.isdisjoint(s2) 如果S与s2交集为空返回True,非空则返回False
    S.issubset(s2) 如果S与s2交集为非空返回True,空则返回False
    S.issuperset(...) 如果S为s2的子集返回True,否则返回False
    S.symmetric_difference(s2) 返回对称补集, 等同于 S ^ s2
    S.symmetric_difference_update(s2) 等同于 S ^= s2, 用 S 与 s2 的对称补集更新 S
    S.union(s2) 生成 S 与 s2的全集, 等同于 S

    集合是可迭代对象

    集合推导式

    语法:

    {表达式 for 临时变量 in 可迭代对象 [if真值表达式]}
    #[]代表其中的内容可以省略
    
    L = [1,2,3,4,5]
    S = {i**2 for i in L}
    print(S)
    {1,3,4,16,25}
    
    

    集合推导式的嵌套等同于列表推导式的嵌套

    Python3推导式就三种:

    • 列表推导式
    • 字典推导式
    • 集合推导式

    Python3中容器类都可以用for循环来遍历

    固定集合

    固定集合是不可变的,无序的,含有唯一元素的集合

    作用:固定集合可以作为字典的键,还可以作为集合的值

    固定集合的构造函数

    #创建一个空的固定集合
    frozenset()
    #用可迭代对象创建一个新的固定集合
    frozenset(iterable)
    
    f = frozenset()
    f2 = frozenset('hello')
    

    固定集合的运算

    & 交集
    | 并集
    - 补集
    ^ 对称补集
    in 在不在
    not in 不在
    <
    <=
    >
    >=
    ==
    !=

    固定集合的方法

    `

    s.add(x) 添加
    s.remove(x) 删除
  • 相关阅读:
    OSCache使用指南
    sql性能优化浅谈
    Oracle SQL性能优化
    SQL性能优化
    Linux/Unix笔记本
    Linux/Unix笔记本
    LUOGU P3413 SAC#1
    poj 2393 Yogurt factory(贪心)
    poj 2431 Expedition (贪心)
    LUOGU P3161 [CQOI2012]模拟工厂 (贪心)
  • 原文地址:https://www.cnblogs.com/pyliuwei/p/11661774.html
Copyright © 2011-2022 走看看