【基础】Python中的集合(Set)数据类型及操作
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_vip.0fdee7e1.png)
![PDF](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PDF.png)
Python数据类型之Set集合实例详解
### Python数据类型之Set集合实例详解 #### 一、概述 在Python中,`set`是一种内置的数据类型,它主要用于存储唯一元素的集合。与字典(`dict`)相似,`set`同样使用键(key)的概念,但不同的是,`set`中的元素不包含值(value),即`set`只存储键。由于其特性,`set`非常适用于执行数学运算如交集、并集等操作,并且能够高效地进行成员资格测试。 #### 二、Set的创建 ##### 1. 创建方法 `set`可以通过多种方式创建: - **直接使用`set()`函数**:当不传入参数时,默认创建一个空的`set`对象。 - **传入序列类型**:如列表、元组或字符串等,其中的元素会被转换为`set`中的元素,重复的元素会被自动去除。 - **使用`{}`**:类似于字典的初始化方式,但不包含冒号,例如`{1, 2, 3}`。 ```python # 使用set()函数创建 empty_set = set() # 使用列表创建 set1 = set([1, 2, 3, 4, 5]) # 使用字符串创建 set2 = set("hello") # 使用元组创建 set3 = set((1, 2, 2, 3, 3, 3, 4)) # 输出结果 print(set1) # {1, 2, 3, 4, 5} print(set2) # {'l', 'o', 'h', 'e'} print(set3) # {1, 2, 3, 4} ``` #### 三、Set的基本操作 ##### 1. 添加元素 - **`add()`**:向集合中添加单个元素。 - **`update()`**:向集合中添加多个元素,可以接收列表、元组、字符串等可迭代对象。 ```python s1 = set([1, 2, 3, 4, 5]) s1.add(6) # 添加单个元素 s1.update([4, "anam", "hha"]) # 添加多个元素 s1.update("hello") # 将字符串打散后添加 print(s1) # {1, 2, 3, 4, 5, 6, 'a', 'm', 'n', 'l', 'o', 'h', 'e', 'hha'} ``` ##### 2. 删除元素 - **`remove()`**:移除指定元素,如果元素不存在会抛出异常。 - **`discard()`**:移除指定元素,如果元素不存在则不做任何操作。 - **`pop()`**:随机移除并返回一个元素,如果集合为空会抛出异常。 ```python s1 = set([1, 2, 3, 4, 5]) s1.remove(3) # 移除元素3 s1.discard(6) # 尝试移除元素6,但因为不存在所以不做任何操作 element = s1.pop() # 随机移除一个元素 print(s1) # 假设移除了1,则输出为{2, 4, 5} print(element) # 输出被移除的元素,假设为1 ``` ##### 3. 遍历元素 由于`set`是无序的,无法通过索引访问元素,但可以使用循环遍历。 ```python s1 = set([1, 2, 3, 4, 5]) for i in s1: print(i) for index, data in enumerate(s1): print(index, data) ``` ##### 4. 集合运算 - **`union()`** / `|`:计算两个集合的并集。 - **`intersection()`** / `&`:计算两个集合的交集。 - **`difference()`** / `-`:计算两个集合的差集(A-B表示属于A但不属于B的元素)。 - **`symmetric_difference()`** / `^`:计算两个集合的对称差集(A^B表示属于A或B但不同时属于两者的元素)。 ```python s1 = set([1, 2, 3, 4, 5]) s2 = set([4, 5, 6, 7]) s3 = s1 & s2 # 交集 s4 = s1 | s2 # 并集 s5 = s1 - s2 # 差集 s6 = s1 ^ s2 # 对称差集 print(s3) # {4, 5} print(s4) # {1, 2, 3, 4, 5, 6, 7} print(s5) # {1, 2, 3} print(s6) # {1, 2, 3, 6, 7} ``` #### 四、其他相关知识点 - **子集与超集**:`issubset()`用于检查一个集合是否为另一个集合的子集,`issuperset()`用于检查一个集合是否为另一个集合的超集。 - **比较操作**:可以使用`==`和`!=`来比较两个集合是否相等。 - **不可变集合**:使用`frozenset()`创建不可变集合,一旦创建就不能修改。 ### 总结 通过上述内容,我们详细了解了Python中`set`集合的基本概念、创建方法以及各种操作技巧。`set`作为一种高效的数据结构,在处理集合相关的运算和问题时非常有用。掌握好`set`的使用,可以帮助我们在编程时更加高效地解决问题。
![profit](https://csdnimg.cn/release/wenkucmsfe/public/img/col_text.aae01bfa.png)
![profit](https://csdnimg.cn/release/wenkucmsfe/public/img/col_load.37200090.png)
![profit](https://csdnimg.cn/release/wenkucmsfe/public/img/col_ai.cfc3dd33.png)
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/0bc15b3a47694a419590e7b7edb7ee81_weixin_26642481.jpg!1)
李_涛
专栏目录
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_text.aae01bfa.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_load.37200090.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_ai.cfc3dd33.png)
最新推荐
![](https://img-home.csdnimg.cn/images/20241226111658.png)
面向对象编程表达式:封装、继承与多态的7大结合技巧
![](https://img-home.csdnimg.cn/images/20241226111658.png)
TransCAD用户自定义指标:定制化分析,打造个性化数据洞察
![](https://img-home.csdnimg.cn/images/20241226111658.png)
从数据中学习,提升备份策略:DBackup历史数据分析篇
![](https://img-home.csdnimg.cn/images/20241226111658.png)
【数据分布策略】:优化数据分布,提升FOX并行矩阵乘法效率
![](https://img-home.csdnimg.cn/images/20241226111658.png)
数据分析与报告:一卡通系统中的数据分析与报告制作方法
![](https://img-home.csdnimg.cn/images/20241226111658.png)
电力电子技术的智能化:数据中心的智能电源管理
![](https://img-home.csdnimg.cn/images/20241226111658.png)
【数据库升级】:避免风险,成功升级MySQL数据库的5个策略
![](https://img-home.csdnimg.cn/images/20241226111658.png)
【终端打印信息的项目管理优化】:整合强制打开工具提高项目效率
![](https://img-home.csdnimg.cn/images/20241226111658.png)
【遥感分类工具箱】:ERDAS分类工具使用技巧与心得
![](https://img-home.csdnimg.cn/images/20241226111658.png)
【射频放大器设计】:端阻抗匹配对放大器性能提升的决定性影响
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
专栏目录
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_text.aae01bfa.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_load.37200090.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_ai.cfc3dd33.png)