在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/集合_(數學)