在python中集合分两种:html
集合的特色:python
线性结构的查询时间复杂度是O(n),即随着数据规模的增大而耗时增长。set和dict经过hash table实现,时间复杂度是O(1),查询时间与数据规模无关。数据结构
建立一个set。注意:建立一个空集合必须使用set()而不是{},{}用来建立一个空字典code
s1 = set('abcde') s2 = set(['a','b','c','d','e']) s3 = {'a','b', 'c', 'd', 'e'} print(s1) print(s2) print(s3) # {'c', 'a', 'e', 'd', 'b'} # {'c', 'a', 'e', 'd', 'b'} # {'c', 'a', 'e', 'd', 'b'}
建立一个frozensethtm
s4 = frozenset('abcde') print(s4) # frozenset({'c', 'a', 'e', 'd', 'b'})
集合运算索引
s5 = set('cefxyz') # 并集(合集),相加 print(s1 | s5) # 这里能够传递一个或多个iterable,返回一个新的集合 print(s1.union(s5)) # 'z', 'd', 'f', 'c', 'x', 'a', 'e', 'b', 'y'} # 并等 s1 |= s5 print(s1) # {'c', 'd', 'e', 'z', 'b', 'f', 'a', 'y', 'x'} # 这里也能够传递一个或者多个iterable,不一样的是这里是就地修改 s1.update('opq') print((s1)) # {'o', 'a', 'm', 'd', 'c', 'b', 'e', 'q', 'p'} # 交集,公共部分 print(s1 & s5) print(s1.intersection(s5)) # {'c', 'e'} # 交等 s1 &= s5 print(s1) print(s1.intersection_update('opq')) # {'c', 'e'} # 差集,相减 print(s1 - s5) print(s1.difference(s5)) # {'b', 'a', 'd'} # 差等 s1 -= s5 print(s1) s1.difference_update(s5) # {'b', 'a', 'd'} # 对称差集,并集减去交集 print(s1 ^ s5) print(s1.symmetric_difference(s5)) # {'x', 'a', 'b', 'z', 'y', 'd', 'f'} # 对称差等 s1 ^= s5 print(s1) s1.symmetric_difference_update(s5) # {'x', 'a', 'b', 'z', 'y', 'd', 'f'}
对于两个集合A和B,若是A是B的子集,且A不等于B,那么A就是B的真子集,B是A的真超集。ip
判断一个集合是不是另外一个集合的子集内存
s6 = {'a', 'b', 'c', 'd', 'e', 'f', 'g'} print(s1.issubset(s6)) # True print(s1 <= s6) # True # 判断真子集 print(s1 < s6) # True
判断一个集合是不是另外一个集合的超集(父集)rem
print(s6.issuperset(s1)) # True print(s6 >= s1) # True # 判断真超集 print(s6 > s1) # True
判断两个集合是否没有交集get
print(s1.isdisjoint(s6)) # False
添加一个元素
s1.add('m') print((s1)) # {'a', 'c', 'e', 'b', 'm', 'd'}
删除一个元素
# 对于remove()方法,若是元素不存在将抛出KeyError异常 s1.remove('a') print((s1)) # {'p', 'e', 'c', 'd', 'm', 'o', 'q', 'b'} # discard()方法一样用来删除一个元素,不过元素不存在时不作任何操做,而且不会抛出异常 s1.discard('b') print(s1) # {'q', 'd', 'o', 'e', 'p', 'c', 'm'} # pop()删除任意一个元素并返回它的值,若是集合为空将抛出KeyError异常 res = s1.pop() print(res) # d
参考:
https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset
http://www.runoob.com/python3/python3-set.html
https://zh.wikipedia.org/wiki/集合_(数学)