• 【Python基础知识】(18)集合(Set)


    一、Set的创建

    # 集合的创建
    
    # 1. 使用{}创建
    collage1 = {"哲学", "经济学", "法学", "教育学"}
    # 注意:输出的集合是无序的
    print(collage1)  # 输出:{'法学', '经济学', '哲学', '教育学'}
    
    # 2. 通过set()函数:从其他数据结构转换
    collage2 = set(["金融学", "哲学", "经济学"])
    print(collage2)  # 输出:{'哲学', '经济学', '金融学'}
    
    # 3. 使用set()函数创建字符串集合
    collage3 = set("中华人民共和国")
    print(collage3)  # 输出:{'华', '共', '国', '民', '和', '人', '中'}
    
    # 4. 空集合的创建
    collage4 = set()
    print(collage4)  # 输出:set()
    # 注意:collage4 = {} 创建的是一个字典
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    二、Set的数学运算

    交集:intersection,intersection_update

    并集:union

    差集:difference,difference_update

    # 集合的数学运算
    collage1 = {"哲学", "经济学", "法学", "教育学"}
    collage2 = set(["金融学", "哲学", "经济学"])
    
    
    # 交集intersection:获取两个集合中重复的部分,新建一个集合
    collage3 = collage1.intersection(collage2)
    print(collage3)  # 输出:{'经济学', '哲学'}
    
    # 对collage1产生改变
    collage1.intersection_update(collage2)
    print(collage1)  # 输出:{'经济学', '哲学'}
    
    
    
    collage1 = {"哲学", "经济学", "法学", "教育学"}
    # 并集union:将两个集合元素合并,去重
    collage4 = collage1.union(collage2)
    print(collage4)  # 输出:{'法学', '教育学', '哲学', '金融学', '经济学'}
    
    
    # 差集difference:获取B中没有A中有的
    # 单向差集
    collage5 = collage1.difference(collage2)
    print(collage5)  # 输出:{'法学', '教育学'},找出collage2没有collage1有的
    collage6 = collage2.difference(collage1)
    print(collage6)  # 输出:{'金融学'},collage1没有collage2有的
    
    # 双向差集symmetric_difference:两个集合的差异部分
    collage7 = collage1.symmetric_difference(collage2)
    print(collage7)  # 输出:{'教育学', '法学', '金融学'}
    collage1.difference_update(collage2)
    print(collage1)  # 输出:{'法学', '教育学'}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    三、Set之间的关系操作

    1. ==:判断集合是否相等

    2. issubset:是否为子集

    3. issuperset:是否为父集

    4. isdisjoint判断是否存在相同元素,存在返回False,不存在返回True

    # 集合间的关系操作
    s1 = {1, 2, 3, 4, 5, 6}
    s2 = {6, 5, 4, 3, 2, 1}
    
    # ==判断两个集合是否相等
    print(s1 == s2)  # 输出:True
    
    s3 = {7, 8, 9, 10}
    s4 = {1, 2, 3, 4, 5, 6, 7, 8}
    
    # issubset判断是否为子集
    print(s3.issubset(s4))  # 输出:False
    
    # issuperset判断是否为父集
    print(s4.issuperset(s3))  # 输出:False
    
    s5 = {5}
    s6 = {1, 3, 5, 7, 9}
    
    # isdisjoint判断集合是否存在重复元素:True表示不存在,False表示存在
    print(s5.isdisjoint(s6))  # 输出:False
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    四、Set的基本操作

    collage1 = {"哲学", "经济学", "法学", "教育学"}
    
    • 1

    1、遍历

    for 变量名 in 集合名

    for c in collage1:
        print(c)
    # 输出:
    # 经济学
    # 教育学
    # 哲学
    # 法学
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意:不能按照下标来取值,因为集合无序

    2、判断元素是否存在

    # 判断元素是否存在
    print("哲学" in collage1)  # 输出:True
    
    • 1
    • 2

    3、新增

    add:新增,一次只能新增一个元素

    set.add(“元素”)

    update:可以一次增加多个元素

    set.update((“元素1” , “元素2”))

    # 新增数据(无则增之,有则忽视),一次只能添加一个元素
    collage1.add("计算机学")
    collage1.add("哲学")
    print(collage1)  # 输出:{'经济学', '教育学', '法学', '哲学', '计算机学'}
    
    # 使用update方法一次添加多个元素,不支持更新操作
    collage1.update(("生物学", "工程学"))
    print(collage1)  # 输出:{'计算机学', '哲学', '工程学', '经济学', '法学', '生物学', '教育学'}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4、更改:先删除,后添加

    set.remove([指定元素]):若元素不存在会报错

    set.discard([指定元素]):若元素不存在则忽略删除操作

    # 若要更新,需要先删除指定元素,再进行添加
    # 若remove了不存在的元素,会报错
    # discard如果遇到不存在的元素,会忽略删除操作
    collage1.remove("生物学")
    collage1.add("医学")
    collage1.discard("生物学")
    print(collage1)  # 输出:{'经济学', '哲学', '法学', '工程学', '教育学', '计算机学', '医学'}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    五、Set的特点

    1. 元素是无序的

    2. 元素不能重复

    3. 可变

    4. 允许数学运算

    5. 在内存中是分散存储的

      缺点:浪费内存空间

  • 相关阅读:
    Java IO包中FileReader和FileWriter的简介说明
    mybatis增删改查模板设置及设置调用
    ArangoDB 社区分布式集群 部署
    MySql事务
    C++基本语法和注释
    RabbitMQ的使用
    linux 压缩包解压
    GBase 8c数据类型-位串类型
    【Python实战】“特种兵”们的专属游戏助手,助你吃鸡:极品小助手也是棒呆了~(“大吉大利,今W吃鸡”)
    多测师肖sir___ddt讲解(辅助框架)
  • 原文地址:https://blog.csdn.net/weixin_45721343/article/details/127900152