集合是一种无序且元素唯一的容器,集合与字典类似,但是只有键没有值。集合可以有两种创建方式:通过set函数或者是用字面值集与大括号的语法:
set([2,2,2,1,3,3])
{1, 2, 3}
{2,2,2,1,3,3}
{1, 2, 3}
集合支持数学上的集合操作,例如联合,交集,差集,对称差集;例如两个集合的联合就是两个集合中不同元素的并集。可以通过union方法或是| 二元操作符完成:
a = {1,2,3,4,5}
b = {3,4,5,6,7,8}
a.union(b)
{1, 2, 3, 4, 5, 6, 7, 8}
a|b
{1, 2, 3, 4, 5, 6, 7, 8}
当交集包含了两个集合中同时包含的元素。可以使用intersection方法或者&操作符获得交集:
a.intersection(b)
{3, 4, 5}
a&b
{3, 4, 5}
和字典类似,集合的元素必须是不可变的。如果想要包含列表型的元素,必须先转换为元组:
data = [1,2,3,4]
set_data = {tuple(data)}
set_data
{(1, 2, 3, 4)}
还可以使用issubest函数和issuperset函数来检查一个集合是否是另一个结合的子集(包含于)或超集(包含),并且仅当两个集合的内容一模一样时,两个集合才相等:
a_set = {1,2,3,4,5}
{1,2,3}.issubset(a_set)
True
a_set.issuperset([1,2,3])
True
{1,2,3} == {3,2,1}
True
所有的逻辑集合运算都有对应操作,允许你用操作的结果替代操作左边的集合内容,一般适用于大型集合:
c = a.copy()
c|=b
c
{1, 2, 3, 4, 5, 6, 7, 8}
d = a.copy()
d &= b
d
{3, 4, 5}
以下是Python集合各个操作函数的描述:
a.add(x):将元素x加入集合a;
a.clear( ):将集合重置为空,清空所有元素;
a.remove(x):从集合a移除某个元素;
a.pop( ):移除任意元素,如果集合是空的抛出keyError;
a.union(b)或者a|b:a和b中的所有不同元素;
a.update(b)或者a|=b:将a的内容设置为a和b的并集;
a.instersection(b)或者a&b:a、b中同时包含的元素;
a.instersection_update(b)或者a&=b:将a的内容设置为a和b的交集;
a.difference(b)或者a-b:在a不在b的元素;
a.difference_update(b)或者a-=b:将a的内容设置为在a不在b的元素;
a.symmetric_difference(b)或者a^b:所有在a或b中,但不是同时在a、b中的元素;
a.symmetric_difference_update(b)或者a^=b:将a的内容设为所有在a或b中,但不是同时在a、b中的元素;
a.issubest(b):如果a包含于b返回True;
a.issuperset(b):如果a包含b返回True;
a.isdisjoint(b):a、b没有交集返回True。