Python中的set函数是一个无序不重复的元素集。主要用于关系测试和去除重复项。同时,set集合也支持数学上的关系运算,如union(并集),intersection(交集),difference(差集)和symmetric difference(对称差集)。

与其他类型的集合一样,set集合支持‘x in set','len(set)','for x in set'方法。但是由于set函数是无序集合,不会记录元素位置或者插入点,set函数并不支持indexing,slicing或者其他类型的类序列操作。

在Python3.3版本中,有两个内置set函数,分别是:set() 和 frozenset().两者的区别在于,set函数所获得的集合内容是可变动的,可以使用add(),update(),remove()函数增删集合内容。但也正是因为它是可变动的,所以不能用于字典中的key或者set集合里面的子集。frozenset函数所获得的集合内容已经生成便不能再变动,可以用做字典的key或者set集的子集。

相关函数方法的使用:
s = set(data)
len (s)
返回集合s的长度;
x in s
x是否在集合s当中;
s.isdisjoint(s1)
测试集合s与s1中数据关系,如果s中没有任何项在s1中,则返回True,否则返回False;
s.issubset(s1)
s <= s1
如果s是s1的子集,则返回True,否则返回False;
s < s1
如果s是s1的真子集,则返回true,否则为False;
s.issuperset(s1)
s >= s1
如果s1是s的子集,则返回True,否则返回False;
s > s1
如果s1是s的真子集,则返回True,否则返回False;
s.union(s1,s2...)
s | s1 | s2 ...
返回各集合的并集;
s.intersection(s1,s2...)
s & s1 & s2 ...
返回各集合的交集;
s.difference(s1,s2...)
s - s1 - s2 ...
集合s与其他集合s1,s2等的差集;
s.symmetric_difference(s1)
s ^ s1
返回在s中或者在s2中,但是不同时包含在两者中的元素;
s1 = s.copy()
将s复制给s1;
 
s.union(),s.issubset()等非操作符的方法可以将任何类型作为其参数,而使用>,<,|等方法时,则要求所有参数都必须是set或frozenset类型。
 
另外一些只可用于set集合但不能用于frozenset集合的方法:
 
s.update(s1,s2...)
s |= s1 | s2 ...
更新s,将s1,s2等集合的元素添加到s中;
s.intersection_update(s1,s2...)
set &= s1 & s2 ...
 更新集合s,只保留既在s中,又同时存在于s1,s2...等所有其他集合中的元素;
s.difference_update(s1,s2...)
s -= s1 | s2 ...
更新集合s,去除掉在s1,s2等其他集合中出现的元素;
s.symmetric_update(s1)
s ^= s1
更新集合s,只保留在s中或者在s1中但不同时存在于两个集合中的元素;
s.add(element)
向集合s中添加一个元素;
s.remove(element)
从集合s中删除一个元素,如果此元素在集合s中不存在则返回错误警告;
s.discard(element)
从集合s中删除一个元素,如果此元素在集合中不存在,则什么也不做;
s.pop()
从集合s中删除并返回任一元素(从测试结果来看,好像是按照在set中元素顺序从左向右依次删除),如果集合为空则返回错误警告;
s.clear()
清空集合。