1. 程式人生 > >set集合(去重)

set集合(去重)

set的新增資料方法有二,
區別: add() 方法會將整個資料作為一項加入,而 update() 會將整個資料切分成單個字元逐一新增進 set() 集合

1、呼叫 update() 方法

>>> b=set()
>>> b.update('python')
>>> b
set(['h', 'o', 'n', 'p', 't', 'y'])

2、呼叫 add() 方法
>>> b=set()
>>> b.add('python')
>>> b
set(['python'])
------------------------------------------------------------------------------------------

存在測試: in   &  not in
------------------------------------------------------------------------------------------

集合運算:
>>> a = set('abcde')
>>> b = set('cdefg')
>>> a
set(['a', 'c', 'b', 'e', 'd'])
>>> b
set(['c', 'e', 'd', 'g', 'f'])
>>> a & b                  #對應 a.intersection(b)
set(['c', 'e', 'd'])
>>> a | b                   #對應 a.union(b)
set(['a', 'c', 'b', 'e', 'd', 'g', 'f'])
>>> a - b		    #對應 a.difference(b)
set(['a', 'b'])
------------------------------------------------------------------------------------------

列表去重複:先轉換成set() ,再用list()轉換為列表

>>> lst = [1,2,3,2,1]
>>> lst
[1, 2, 3, 2, 1]
>>> lst = set(lst)
>>> lst
set([1, 2, 3])
>>> lst = list(lst)
>>> lst
[1, 2, 3]
------------------------------------------------------------------------------------------
 
超類檢測:
>>> c =a|b
>>> c.issubset(a)
False
>>> c.issuperset(a)
True
------------------------------------------------------------------------------------------

frozenset() 生成一個不可變的集合,不可改變其中資料。可用於生成集合:
set( frozenset( lst ) )

------------------------------------------------------------------------------------------
活用 set 示例
判斷 search 中的字元是否都出現在 a 中:

a = "aAsmr3idd4bgs7Dlsf9eAF"
search = 'baA3idbg7D'
u = set( a )
u.update( list( search ) )
print len( set( a ) == len( u ) )

由於set 中的元素不能重複,所以如果update過後長度沒有改變,則說明該字元已經存在於 a ,否則不存在(輸出 False)。