某学校有两个班级,班级A需要学习数学、语文、英语、物理、化学和生物,班级B需要学习数学、语文、英语、政治、地理和历史。
我们可以直接看出A班级和B班级的交集为数学、语文和英语,并集为数学、语文、英语、物理、化学、生物、政治、地理、历史,A和B的差集为物理、化学和生物。
那么怎么使用Python去完成这些运算?
我们先在这里定义两个集合,
因为是求交集,因此A和B的位置调换依然不影响结果。
使用集合求并集的方式同样也是两种方式,一种是使用 ‘|’ 运算符进行操作,一种是使用 union() 方法来实现。
求并集的时候同样不需要注意 A 和 B 的位置关系。
使用集合求差集的方式同样也是两种方式,一种是使用 ‘-’ 运算符进行操作,一种是使用 difference() 方法来实现。
在方法2中注意 A 和 B 的位置不同的时候是有区别的,如果是 A 使用 difference() 方法,那么是输出 A 中有而 B 中没有的元素,如果是 B 使用 difference() 方法,那么是输出 B 中有而 A 中没有的元素。
学习完了集合,四种核心集合我们已经基本掌握,接下来几节我们来通过学习一些字符串的相关操作,学习字符串的过程中会穿插着前面简单介绍过但没仔细讲解的方法及操作。
目录
前几节我们已经介绍了Python 中的 列表list , 元组tuple 和 字典dict ,本节来介绍Python 中的最后一种数据结构—— 集合set 。
Python 中的 set 与 dict 很像,唯一的不同是, dict 中保存的是 键值对 ,而 set 中只保存 键 ,没有 值 。
Python 集合 有如下特点:
Python 集合的声明有两种方式:
创建 空集合 时,只能用 set() ,而不能用 {} :
创建 非空集合 时,可以用 set() ,也可以用 {} :
由于集合中的元素是唯一的,如果初始化时的 可迭代 数据中有重复的元素,则会自动删去重复的元素:
使用 len() 函数可以查看集合中元素的个数:
由于Python 集合中的元素的是无序的,所以可不能使用 下标 的方式来访问集合中的单个元素。
我们可以使用 for 循环 来遍历集合中的所有元素:
我们可以对两个集合进行如下运算:
交集与并集
in 运算
使用 dir(set) 查看集合支持的所有方法:
下面一一介绍这些 非魔法方法 ,共17 个。
1. add 方法
由于集合中的元素是唯一的,向集合中添加元素时有两种情况:
示例:
2. remove 方法
示例:
3. discard 方法
示例:
4. pop 方法
示例:
5. union 方法
示例:
6. update 方法
示例:
7. clear 方法
示例:
8. copy 方法
示例:
9. difference 方法
示例:
10. difference_update 方法
示例:
11. intersection 方法
示例:
12. intersection_update 方法
示例:
13. isdisjoint 方法
示例:
14. issubset 方法
示例:
15. issuperset 方法
示例:
16. symmetric_difference 方法
示例:
17. symmetric_difference_update 方法
示例:
(完。)
推荐阅读:
Python 简明教程 --- 8,Python 字符串函数
Python 简明教程 --- 9,Python 编码
Python 简明教程 ---10,Python 列表
Python 简明教程 ---11,Python 元组
Python 简明教程 ---12,Python 字典
差集 a-b 从集合a中去除所有在集合b中出现的元素集合并集 a|b 集合a,b中所有不重复的元素集合
交集 a&b 集合a,b中均出现的元素集合
如 a={1,2,3,4} b={2,4,6,8} a集合中减去b中出现的2,4 a-b为{1,3}
a|b 为 {1,2,3,4,6,8} a&b为 a ,b中均出现的{2,4}