Python——set集合

来源:互联网 发布:银行服务排名 知乎 编辑:程序博客网 时间:2024/06/08 02:10

Python中set集合位于sets模块中,在Python2.3中集合通过setl类型的实现成为了语言的一部分,因而在使用的时候不需要导入sets模块,直接可以使用。通过help(set)指令可以查看到Python中set的各种方法。
一、集合定义和基本操作
1.1 set集合的定义:

>>> a=set([1,2,3])>>> b=set([4,5,6])

1.2 求两个集合的并集元素:

>>> a.union(b){1, 2, 3, 4, 5, 6}>>> a|b{1, 2, 3, 4, 5, 6}>>> 

1.3 向集合中追加元素(不能添加重复的元素):

>>> a{1, 2, 3}>>> a.add(1)>>> a{1, 2, 3}>>> a.add(4)>>> a{1, 2, 3, 4}>>> 

1.4 从集合中移出元素:

>>> x=set([3,4,5,6,1])>>> x{1, 3, 4, 5, 6}>>> x.remove(4)>>> x{1, 3, 5, 6}>>> 

1.5 求集合的交集:

>>> a{1, 2, 3, 4}>>> b{4, 5, 6}>>> c=a&b>>> c{4}>>> 

1.6 子集判断:

>>> a{1, 2, 3, 4}>>> b{4, 5, 6}>>> c{4}>>> c.issubset(a)True>>> c.issubset(b)True>>> 

1.7 当前集合是否包含其它集合:

>>> a{1, 2, 3, 4}>>> b{4, 5, 6}>>> c{4}>>> c.issuperset(a)False>>> a.issuperset(c)True>>> 

1.8 两个集合的交集:

>>> a{1, 2, 3, 4}>>> b{3, 4, 5, 6}>>> a.intersection(b){3, 4}>>> b.intersection(a){3, 4}>>> 

1.9 集合的差:

>>> a{1, 2, 3, 4}>>> b{3, 4, 5, 6}>>> a.difference(b){1, 2}>>> b.difference(a){5, 6}>>> 

1.10 返回两个集合的对称差作为一个新的集合:

>>> a{1, 2, 3, 4}>>> b{3, 4, 5, 6}>>> a.symmetric_difference(b){1, 2, 5, 6}>>> 

或者:

>>> a{1, 2, 3, 4}>>> b{3, 4, 5, 6}>>> a^b{1, 2, 5, 6}>>> 

1.11 复制集合:

>>> a{1, 2, 3, 4}>>> c=a.copy()>>> c{1, 2, 3, 4}>>> c is aFalse>>> c == aTrue>>> 

二、集合中包含集合:通常情况下集合中包含的元素都是不可变的值,所以集合中不能含有散列的值,若要在集合中嵌入另一个集合,可以使用frozenset,用于代表不可变的集合。

>>> a{1, 2, 3, 4}>>> b{3, 4, 5, 6}>>> a.add(b)Traceback (most recent call last):  File "<pyshell#120>", line 1, in <module>    a.add(b)TypeError: unhashable type: 'set'>>> a.add(frozenset(b))>>> a{frozenset({3, 4, 5, 6}), 1, 2, 3, 4}>>> 
0 0