Python的set和其余语言相似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素。
集合对象支持union(联合),intersection(交),difference(差)和sysmmetric difference(对称差集)等集合运算。函数
要建立集合,可以使用set()函数并像下面这样提供一系列的项:测试
s = set([3,5,9,10]) #建立一个数值集合
t = set("Hello") #建立一个惟一字符的集合
基本操做:spa
sets 支持 x in set, len(set),和 for x in set。做为一个无序的集合,sets不记录元素位置或者插入点。所以,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操做。code
t.add('x') # 添加一项
s.update([10,37,42]) # 在s中添加多项
t.remove('H') # 使用remove()能够删除一项
len(s) # set 的长度
x in s # 测试 x 是不是 s 的成员
s.issubset(t) # 测试是否 s 中的每个元素都在 t 中,返回True / False
s.issuperset(t) # 测试是否 t 中的每个元素都在 s 中
集合运算对象
a = t | s # t 和 s的并集
b = t & s # t 和 s的交集
c = t – s # 求差集(项在t中,但不在s中)
d = t ^ s # 对称差集(项在t或s中,但不会同时出如今两者中)
>>> x = set('spam') >>> y = set(['h','a','m']) >>> x, y (set(['a', 'p', 's', 'm']), set(['a', 'h', 'm'])) >>> x & y # 交集
set(['a', 'm']) >>> x | y # 并集
set(['a', 'p', 's', 'h', 'm']) >>> x - y # 差集
set(['p', 's'])
小应用: 去除大量列表里重复元素
这个问题能够用hash来解决,这里能够用set解决以下:blog
>>> a = [11,22,33,44,11,22] >>> b = set(a) >>> b set([33, 11, 44, 22]) >>> c = [i for i in b] >>> c [33, 11, 44, 22]