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 a
False
>>> c == a
True
>>>
二、集合中包含集合:通常情况下集合中包含的元素都是不可变的值,所以集合中不能含有散列的值,若要在集合中嵌入另一个集合,可以使用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}
>>>