我们在遇到一些问题的时候,使用集合的交集、并集和差集能够更便捷的帮助我们去解决问题,看下面一个例子。
某学校有两个班级,班级A需要学习数学、语文、英语、物理、化学和生物,班级B需要学习数学、语文、英语、政治、地理和历史。
我们可以直接看出A班级和B班级的交集为数学、语文和英语,并集为数学、语文、英语、物理、化学、生物、政治、地理、历史,A和B的差集为物理、化学和生物。
那么怎么使用Python去完成这些运算?
我们先在这里定义两个集合,
1 2 | A = { '数学' , '语文' , '英语' , '物理' , '化学' , '生物' } B = { '数学' , '语文' , '英语' , '政治' , '地理' , '历史' } |
1. 交集
我们使用集合求交集的时候可以采用两种方式,一种是使用‘&’运算符进行操作,一种是使用intersection()方法来实现。
我们通过这两种方法来分别求集合A和B的交集。
方法1——使用‘&’运算符:
1 2 3 4 | >>> A = { '数学' , '语文' , '英语' , '物理' , '化学' , '生物' } >>> B = { '数学' , '语文' , '英语' , '政治' , '地理' , '历史' } >>> A & B { '英语' , '语文' , '数学' } |
方法2——使用intersection()方法:
1 2 3 4 | >>> A = { '数学' , '语文' , '英语' , '物理' , '化学' , '生物' } >>> B = { '数学' , '语文' , '英语' , '政治' , '地理' , '历史' } >>> A.intersection(B) { '英语' , '语文' , '数学' } |
因为是求交集,因此A和B的位置调换依然不影响结果。
2. 并集
使用集合求并集的方式同样也是两种方式,一种是使用‘|’运算符进行操作,一种是使用union()方法来实现。
方法1——使用‘|’运算符
1 2 3 4 | >>> A = { '数学' , '语文' , '英语' , '物理' , '化学' , '生物' } >>> B = { '数学' , '语文' , '英语' , '政治' , '地理' , '历史' } >>> A | B { '英语' , '物理' , '语文' , '政治' , '化学' , '数学' , '生物' , '地理' , '历史' } |
方法2——使用union()方法
1 2 3 4 | >>> A = { '数学' , '语文' , '英语' , '物理' , '化学' , '生物' } >>> B = { '数学' , '语文' , '英语' , '政治' , '地理' , '历史' } >>> A.union(B) { '英语' , '物理' , '语文' , '政治' , '化学' , '数学' , '生物' , '地理' , '历史' } |
求并集的时候同样不需要注意A和B的位置关系。
3. 差集
使用集合求差集的方式同样也是两种方式,一种是使用‘-’运算符进行操作,一种是使用difference()方法来实现。
方法1——使用‘-’运算符
1 2 3 4 5 6 | >>> A = { '数学' , '语文' , '英语' , '物理' , '化学' , '生物' } >>> B = { '数学' , '语文' , '英语' , '政治' , '地理' , '历史' } >>> A - B { '物理' , '生物' , '化学' } >>> B - A { '政治' , '历史' , '地理' } |
方法2——使用difference()方法
1 2 3 4 5 6 | >>> A = { '数学' , '语文' , '英语' , '物理' , '化学' , '生物' } >>> B = { '数学' , '语文' , '英语' , '政治' , '地理' , '历史' } >>> A.difference(B) { '物理' , '生物' , '化学' } >>> B.difference(A) { '政治' , '历史' , '地理' } |
在方法2中注意A和B的位置不同的时候是有区别的,如果是A使用difference()方法,那么是输出A中有而B中没有的元素,如果是B使用difference()方法,那么是输出B中有而A中没有的元素。
4. 总结
学习完了集合,四种核心集合我们已经基本掌握,接下来几节我们来通过学习一些字符串的相关操作,学习字符串的过程中会穿插着前面简单介绍过但没仔细讲解的方法及操作。