Python学习--集合
1 集合(set)
Python的set是一个无序不重复元素集合,适用大括号"{}"包含元素,基本功能包括关系测试和消除重复元素,
集合元素还支持union(联合),intersection(交), difference(差)和systemmetric difference(对称差集)等数学运算。
此外,集合支持 x in set, len(set) 和 for x in set。set是一个无序集合,不支持记录元素的位置或者插入点。因而,set不支持索引,切片,序列等操作。
2 集合操作
2.1 add(self, *args, **kwargs)
向set中添加元素,每次只能添加一个可哈希的对象,例如元素和元组
1 set1 = set() 2 set1.add(1) 3 set1.add((2, 3, 4)) 4 print(set1) 5 6 >>{1, (2, 3, 4)}
2.2 clear(self, *args, **kwargs)
移除set中的所有元素
1 set1 = {1, 2, 3, 4, 'hello'} 2 print(set1) 3 set1.clear() 4 print(set1) 5 6 >>{1, 2, 3, 4, 'hello'} 7 >>set()
2.3 copy(self, *args, **kwargs)
返回一个浅拷贝的set
2.4 difference(self, *args, **kwargs)
返回两个或多个集合的差集,差集作为一个新的集合返回
1 set1 = {1, 2, 3, 4, 'hello'} 2 set2 = {1, 2, 6, 'world'} 3 set3 = set1.difference(set2) 4 print(set3) 5 6 >>{'hello', 3, 4}
新的集合为set1去掉set1和set2交集元素后形成的新集合
2.5 difference_update(self, *args, **kwargs)
1 set1 = {1, 2, 3, 4, 'hello'} 2 set2 = {1, 2, 6, 'world'} 3 set1.difference_update(set2) 4 print(set1) 5 6 >>{3, 4, 'hello'}
删除set1中和set2相同的元素
2.6 discard(self, *args, **kwargs)
移除集合中的一个元素,如果集合中没有目标元素不做任何处理
1 set1 = {1, 2, 3, 4, 'hello'} 2 set1.discard(1) 3 print(set1) 4 set1.discard(5) 5 print(set1) 6 7 >>{2, 3, 4, 'hello'} 8 >>{2, 3, 4, 'hello'}
2.7 intersection(self, *args, **kwargs)
返回两个集合的交集
2.8 intersection_update(self, *args, **kwargs)
1 set1 = {1, 2, 3, 4, 'hello'} 2 set2 = {1, 2, 6} 3 set1.intersection_update(set2) 4 print(set1) 5 6 >>{1, 2}
新的set1为set1和set2取交集得到的元素
2.9 isdisjoint(self, *args, **kwargs)
判断两个集合是否有交集,如果有返回True,如果没有返回False
1 set1 = {1, 2, 3, 4, 'hello'} 2 set2 = {6, 7, 8} 3 set3 = {1, 2} 4 ret1 = set1.isdisjoint(set2) 5 ret2 = set1.isdisjoint(set3) 6 print(ret1) 7 print(ret2) 8 9 >>True 10 >>False
3.0 issubset(self, *args, **kwargs)
判断是否是子集
3.1 issuperset(self, *args, **kwargs)
判断是否是超集
3.2 pop(self, *args, **kwargs)
移除集合中的第一个元素并返回这个元素
1 set1 = {1, 2, 3, 4, 'hello'} 2 set2 = set1.pop() 3 print(set1) 4 print(set2) 5 6 >> {2, 3, 4, 'hello'} 7 >>1
3.3 remove(self, *args, **kwargs)
移除指定元素,没有这个元素报错
1 set1 = {1, 2, 3, 4, 'hello'} 2 set1.remove(3) 3 print(set1) 4 5 >>{1, 2, 4, 'hello'}
3.4 symmetric_difference(self, *args, **kwargs)
返回对称差集,即集合1中或集合二中有的元素,但不包括两个集合都有的元素
1 set1 = {1, 2, 3, 4, 'hello'} 2 set2 = {1, 2, 5, 7} 3 set3 = set1.symmetric_difference(set2) 4 print(set3) 5 6 >>{3, 4, 5, 7, 'hello'}
3.5 symmetric_difference_update(self, *args, **kwargs)
将对称差集更新到函数前面的集合中
1 set1.symmetric_difference_update(set2) 2 print(set1) 3 4 >>{3, 4, 'hello', 5, 7}
3.6 union(self, *args, **kwargs)
两个集合求并集,并将并集作为新的集合返回
3.7 update(self, *args, **kwargs)
两个集合求并,并将新集合更新到函数前的集合
set1 = {1, 2, 3, 4, 'hello'} set2 = {1, 2, 5, 7} set1.update(set2) print(set1) >>{1, 2, 3, 4, 5, 7, 'hello'}