Python中的Sets數據結構

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]
相關文章
相關標籤/搜索