• Python 数据容器(3) - set(集合)


    为什么使用集合
    • 通过特性来分析
      • 列表可修改,支持重复元素且有序。
      • 元祖、字符串不可修改、支持重复元素且有序。

    如果场景需要对内容做去重处理、列表、元祖、字符串就不方便了。而集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序。

    基本语法
     # 定于集合字面量
    {元素, 元素,....., 元素}
     # 定义集合变量
    变量名称 = {元素, 元素,....., 元素}
     # 定义空集合
    变量名称 = set() 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    和列表、元祖、字符串等定义基本相同:

    • 列表使用: []
    • 元祖使用:()
    • 字符串使用:“”
    • 集合使用: {}
    names = {"zhangsan", "lisi", "wangwu", "zhangsan"}
    print(names)
    # 结果 {'lisi', 'wangwu', 'zhangsan'}
    
    
    • 1
    • 2
    • 3
    • 4

    结果中可见:去重且无序 因为要对元素做去重处理,所以无法保证顺序和创建的时候一致

    集合的常用操作

    首先,因为集合是无序的,所以集合不支持:下标索引访问。但是集合和列表是一样允许修改的。

    添加新元素
    # 语法: 集合.add(元素)。将指定元素,添加到集合内。
    # 集合本身被修改,添加了新元素
    my_set = {"one", "two"}
    my_set.add("three")
    print(my_set)
    # 结果 {'three', 'one', 'two'}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    移除新元素
    # 语法:集合.remove(元素),将指定元素,从集合内移除
    # 结果:集合本身被修改,移除了元素
    my_set = {"one", "two", "three"}
    my_set.remove("one")
    print(my_set)
    # 结果:{'two', 'three'}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    从集合随机取出元素
    # 语法: 集合.pop(), 从集合中随机取出一个元素
    # 结果:会得到一个元素的结果,同时集合本身被修改,元素被移除
    my_set = {"one", "two", "three"}
    element = my_set.pop()
    print(my_set)
    print(element)
    #结果 {'one', 'three'}  two
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    清空集合
    # 语法:集合.clear(),清空集合
    # 结果 集合本身被清空
    my_set = {"one", "two", "three"}
    my_set.clear()
    print(my_set)
    # 结果set()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    取出2个集合的差集
    # 语法: 集合1.difference(集合2),取出集合1和集合2的差集(集合1有而集合2没有的)
    # 结果: 得到一个新集合,集合1和集合2不变
    set1 = {1, 2, 3}
    set2 = {1, 5, 6}
    set3 = set1.difference(set2)
    print(set3)
    print(set2)
    print(set1)
    # 结果:
    # {2, 3}
    # {1, 5, 6}
    # {1, 2, 3}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    消除2个集合的差集
    # 语法: 集合1.difference_update(集合2), 在集合1内,删除和集合2相同的元素
    # 结果: 集合1被修改,集合2不变
    set1 = {1, 2, 3}
    set2 = {1, 5, 6}
    set1.difference_update(set2)
    print(set1)
    print(set2)
    # 结果:
    # {2, 3}
    # {1, 5, 6}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2个合集合并
    # 语法: 集合1.union(集合2) 将集合1和集合2合并新集合
    # 结果: 得到新集合,集合1和集合2不变
    set1 = {1, 2, 3}
    set2 = {1, 5, 6}
    set3 = set1.union(set2)
    print(set3)
    # 结果:{1, 2, 3, 5, 6}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    查看集合的元素数量
    # 语法:len(集合) 统计集合内有多少元素
    # 结果: 得到一个整数结果
    set1 = {1, 2, 3}
    print(len(set1))
    #结果:3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    for循环遍历
    set1 = {1, 2, 3}
    for i in set1:
        print(i)
    # 结果
    # 1
    # 2
    # 3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    集合不支持下标索引,所以也就不支持使用while循环

    集合常用功能总结

    在这里插入图片描述

    集合总结
    • 可以容纳多个数据(混装)
    • 数据是无序存储的(不支持下标索引)
    • 不允许重复数据存在
    • 可以修改(增加或删除元素等)
    • 支持for循环
  • 相关阅读:
    PAT 甲级 A1072 Gas Station
    联邦学习fate框架入门
    sql中怎么查books表下面的内容
    C/C++ vector模拟实现
    NODEJS版本管理工具
    如何做到人声和背景音乐分离?简单粗暴,赶紧学起来~
    CPU+GPU掌舵AI大算力时代,中国企业能否从巨头碗中分一杯羹?
    (附源码)ssm产品裂变管理系统 毕业设计 100953
    24节气—小雪海报、文案分享。雨凝成雪,万物冬藏。
    CentOS 7最小化安装没有ifconfig
  • 原文地址:https://blog.csdn.net/xiajun2356033/article/details/128071848