• 上手Python之set(集合)


    为什么使用集合

    我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。 为何又需要学习新的集合类型呢?

    通过特性来分析:

    列表可修改、支持重复元素且有序

    元组、字符串不可修改、支持重复元素且有序

    有没有看出一些局限?

    局限就在于:它们都支持重复元素。

    如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。

    而集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序

    集合的定义

    基本语法:

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

    列表使用:[]

    元组使用:()

    字符串使用:""

    集合使用:{} 

     

     

    结果中可见:

    去重且无序

    因为要对元素做去重处理

    所以无法保证顺序和创建的时候一致 

    集合的常用操作 - 修改 

    首先,因为集合是无序的,所以集合不支持:下标索引访问

    但是集合和列表一样,是允许修改的,所以我们来看看集合的修改方法。

    添加新元素    

     语法:集合.add(元素)。将指定元素,添加到集合内      

    结果:集合本身被修改,添加了新元素

    移除元素      

    语法:集合.remove(元素),将指定元素,从集合内移除      

    结果:集合本身被修改,移除了元素 

    从集合中随机取出元素      

    语法:集合.pop(),功能,从集合中随机取出一个元素      

    结果:会得到一个元素的结果。同时集合本身被修改,元素被移除

    清空集合      

    语法:集合.clear(),功能,清空集合      

    结果:集合本身被清空 

    取出2个集合的差集      

    语法:集合1.difference(集合2)

    功能:取出集合1和集合2的差集(集合1有而集合2没有的)      

    结果:得到一个新集合,集合1和集合2不变 

    消除2个集合的差集      

    语法:集合1.difference_update(集合2)      

    功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。      

    结果:集合1被修改,集合2不变 

     2个集合合并      

    语法:集合1.union(集合2)    

     功能:将集合1和集合2组合成新集合      

    结果:得到新集合,集合1和集合2不变

    集合的常用操作 - 集合长度 

     查看集合的元素数量      

    语法:len(集合)    

     功能:统计集合内有多少元素    

     结果:得到一个整数结果

    集合的常用操作 - for循环遍历 

    集合同样支持使用for循环遍历

    要注意:集合不支持下标索引,所以也就不支持使用while循环。

     

    编号

    操作

    说明

    1

    集合.add(元素)

    集合内添加一个元素

    2

    集合.remove(元素)

    移除集合内指定的元素

    3

    集合.pop()

    从集合中随机取出一个元素

    4

    集合.clear()

    将集合清空

    5

    集合1.difference(集合2)

    得到一个新集合,内含2个集合的差集

    原有的2个集合内容不变

    6

    集合1.difference_update(集合2)

    在集合1中,删除集合2中存在的元素

    集合1被修改,集合2不变

    7

    集合1.union(集合2)

    得到1个新集合,内含2个集合的全部元素

    原有的2个集合内容不变

    8

    len(集合)

    得到一个整数,记录了集合的元素数量

  • 相关阅读:
    输出调节求解跟踪问题(二阶线性系统)
    实时目标检测新高地之#YOLOv7#更快更强的目标检测器
    Matlab App Designer 【04】使用公共函数在两个App之间传递数据
    java家乡旅游文化推广网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    ICCV 2023 超分辨率(super-resolution)方向上接收论文总结
    【*E】leetcode-069.x的平方根
    torchscript相关知识介绍(二)
    【k8s】安装可视化面板Dashboard
    Redis数据类型-需求实战记录
    C/C++(a/b)*c的值 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/127573472