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'}

 

posted @ 2017-03-03 14:06  Techml  阅读(165)  评论(0编辑  收藏  举报