集合中的元素必须可hash
集合具有去重性,一个集合中没有两个相同的元素
集合是无序的(集合中的元素没有先后之分),如集合{1,2,3}和{3,2,1}是同一个集合
定义一个集合
1 2 3 4 5 6 | >>> num = { 1 , 2 , 4 , 3 , 7 , 5 } >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num1 = set ([ 2 , 4 , 6 , 1 , 2 , 9 , 8 ]) >>> num1 { 1 , 2 , 4 , 6 , 8 , 9 } |
集合添加元素
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num.add( 9 ) # 添加元素,一次只能添加一个 >>> num { 1 , 2 , 3 , 4 , 5 , 7 , 9 } >>> num1 { 1 , 2 , 4 , 6 , 8 , 9 } >>> num.update(num1) # 把num1集合中的所有元素添加到num集合中 >>> num { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } >>> num.update([ 10 , 11 , 12 , 13 ]) >>> num { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 } # 使用update方法添加多个元素 |
集合的删除方法
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 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 , 9 } >>> num.pop() # 随机删除集合中的一个元素 1 >>> num.pop() 2 >>> num { 3 , 4 , 5 , 7 , 9 } >>> num.remove( 7 ) # 指定删除集合中的元素 >>> num { 3 , 4 , 5 , 9 } >>> num.remove( 7 ) # 如果集合中没有这个元素就会报错 Traceback (most recent call last): File "<stdin>" , line 1 , in <module> KeyError: 7 >>> num { 3 , 4 , 5 , 9 } >>> num.discard( 4 ) # 指定删除集合中的元素 >>> num { 3 , 5 , 9 } >>> num.discard( 4 ) # 如果集合中没有这个元素,不会报错 >>> num { 3 , 5 , 9 } >>> num.clear() # 清空集合中的元素 >>> num set () |
集合的复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | >>> num = { 1 , 2 , 4 , 3 , 7 , 5 } >>> num1 = num # 通过赋值来复制,如果原集合发生改变,复制的集合也会发生改变 >>> num1 { 1 , 2 , 3 , 4 , 5 , 7 } >>> num.add( 9 ) >>> num { 1 , 2 , 3 , 4 , 5 , 7 , 9 } >>> num1 { 1 , 2 , 3 , 4 , 5 , 7 , 9 } >>> num = { 1 , 2 , 4 , 3 , 7 , 5 } >>> num1 = num.copy() # 深度copy,原集合发生改变,复制的集合不会发生改变,两个集合变得没有关系了 >>> num1 { 1 , 2 , 3 , 4 , 5 , 7 } >>> num.add( 9 ) >>> num { 1 , 2 , 3 , 4 , 5 , 7 , 9 } >>> num1 { 1 , 2 , 3 , 4 , 5 , 7 } |
并集
并集:两个集合所有元素的集合
有两个方法,一个是用union()方法,一个是用“|”符号
1 2 3 4 5 6 7 8 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num1 { 1 , 2 , 4 , 6 , 8 , 9 } >>> num.union(num1) { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } >>> num|num1 { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } |
差集
差集:在一个集合中但不在另一个集合中的元素
有两个方法,一个是difference()方法,一个是“-”符号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num1 { 1 , 2 , 4 , 6 , 8 , 9 } >>> num.difference(num1) # 在集合num中却不在集合num1中的元素 { 3 , 5 , 7 } >>> num - num1 # 在集合num中却不在集合num1中的元素 { 3 , 5 , 7 } >>> num1.difference(num) # 在集合num1中却不在集合num中的元素 { 8 , 9 , 6 } >>> num1 - num # 在集合num1中却不在集合num中的元素 { 8 , 9 , 6 } >>> num.difference_update(num1) # 把在集合num中却不在集合num1中的元素赋给集合num >>> num { 3 , 5 , 7 } |
对称差集
对称差集:两个集合中,只在一个集合和只在另一个集合里的元素
有两个方法,一个是symmetric_difference()方法,一个是“^”符号
1 2 3 4 5 6 7 8 9 10 11 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num1 { 1 , 2 , 4 , 6 , 8 , 9 } >>> num.symmetric_difference(num1) # 只在集合num中和只在集合num1中的元素 { 3 , 5 , 6 , 7 , 8 , 9 } >>> num ^ num1 # 只在集合num中和只在集合num1中的元素 { 3 , 5 , 6 , 7 , 8 , 9 } >>> num.symmetric_difference_update(num1) # 把只在集合num中和只在集合num1中的元素赋给集合num >>> num { 3 , 5 , 6 , 7 , 8 , 9 } |
交集
交集:在一个集合中,也在另一个集合中的元素
有两个方法,一个是intersection()方法,一个是“&”符号
1 2 3 4 5 6 7 8 9 10 11 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num1 { 1 , 2 , 4 , 6 , 8 , 9 } >>> num.intersection(num1) # 集合num和集合num1的交集 { 1 , 2 , 4 } >>> num & num1 # 集合num和集合num1的交集 { 1 , 2 , 4 } >>> num.intersection_update(num1) # 把集合num和集合num1的交集赋给集合num >>> num { 1 , 2 , 4 } |
集合关系的判断
判断两个集合是否相等
1 2 3 4 5 6 7 8 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num1 { 1 , 2 , 4 , 6 , 8 , 9 } >>> num = = num1 # 判断集合num和集合num1是否相等 False >>> num ! = num1 # 判断集合num和集合num1是否不相等 True |
判断元素是否在集合中
1 2 3 4 5 6 7 8 9 10 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> 1 in num # 判断元素1是否在集合num中 True >>> 6 in num # 判断元素6是否在集合num中 False >>> 1 not in num # 判断元素1是否不在集合num中 False >>> 6 not in num # 判断元素6是否不在集合num中 True |
判断集合是否相交
1 2 3 4 5 6 7 8 9 10 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num1 { 1 , 2 , 4 , 6 , 8 , 9 } >>> num2 { 8 , 9 } >>> num.isdisjoint(num1) # 判断集合num和集合num1是否不相交 False >>> num.isdisjoint(num2) # 判断集合num和集合num2是否不相交 True |
判断集合的包含关系
1 2 3 4 5 6 7 8 9 10 11 12 | >>> num { 1 , 2 , 3 , 4 , 5 , 7 } >>> num1 { 1 , 2 , 3 } >>> num.issuperset(num1) # 判断集合num是否包含集合num1 True >>> num > = num1 # 判断集合num是否包含集合num1 True >>> num1.issubset(num) # 判断集合num1是否被集合num包含 True >>> num1 < = num # 判断集合num1是否被集合num包含 True |