在数学中,集合(Set)是一个基本概念,指具有某种特定性质的事物的总体,集合里的事物称作元素。元素 $x$ 和集合 $A$ 之间有属于($x \in A$)和不属于($x \notin A$)关系,集合有势(#$A$, $Card(A)$, $|A|$)的概念,集合有子集和包含关系($B \subset A$),两集合 $A, B$ 间有并($A\cup B$)、交($A \cap B$)、差($A - B$)、对称差($A \triangle B$)运算。在 Python 中,对于该数学概念进行了定义,下面我们进行介绍。
集合定义
1 2 3 4 5 6 7 8 9 10 11 12
| A = set('abc') B = set(['c', 'd', 'e']) C = {'c', 'm', 'n'}
A {'a', 'b', 'c'}
B {'c', 'd', 'e'}
C {'c', 'm', 'n'}
|
集合关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| A = set('abc') B = set(['c', 'd', 'e']) C = {'c', 'm', 'n'}
A.issubset(B) False
A.issuperset(B) False
A.isdisjoint(B) False
|
集合运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| A = set('abc') B = set(['c', 'd', 'e']) C = {'c', 'm', 'n'}
A | B A.union(B) set.union(A, B) {'a', 'b', 'c', 'd', 'e'}
C.union(A, B) A | B | C {'a', 'b', 'c', 'd', 'e', 'm', 'n'}
A & B A.intersection(B) {'c'}
A - B A.difference(B) {'a', 'b'}
A ^ B A.symmetric_difference(B) {'a', 'b', 'd', 'e'}
|
集合增删
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| A = set('abc') B = set(['c', 'd', 'e']) C = {'c', 'm', 'n'}
A.update(B) A {'a', 'b', 'c', 'd', 'e'}
A = set('abc') A.intersection_update(B) A {'c'}
A = set('abc') A.difference_update(B) A {'a', 'b'}
A = set('abc') A.symmetric_difference_update(B) A {'a', 'b', 'd', 'e'}
A = set('abc') A.add('p') A {'a', 'b', 'c', 'p'}
A.remove('p') A {'a', 'b', 'c'}
A.discard('p')
|
集合元素
1 2 3 4 5 6 7 8 9 10 11 12 13
| A = {'a', 'b', 'c'}
len(A) 3
'p' in A False
'p' not in A True
|
集合应用-去重
1 2 3 4
| a = [1, 1, 2, 3] b = list(set(a)) b [1, 2, 3]
|
集合拷贝与清除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| A = {'a', 'b', 'c'}
D = A.copy() id(A), id(D) (139951109280704, 139951109280256)
D {'a', 'b', 'c'}
D.discard('c') D {'a', 'b'}
A {'a', 'b', 'c'}
A.clear() A set()
|
冻结集合
冻结的集合元素无法改变
1 2 3
| Numbers = frozenset('0123456789') Numbers frozenset({'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'})
|
参考链接
- python 集合比较(交集、并集,差集)