1. 程式人生 > >python3 組合資料型別(一)集合型別及操作

python3 組合資料型別(一)集合型別及操作

1.集合型別

集合是大於等於0個元素無序組合,用{}表示,元素間用逗號隔開;用{}或set()函式建立集合,但空集合必須用set()函式。

特點:集合元素之間無序,每個元素唯一(不存在相同元素),元素不可更改不能是可變資料型別,而是字串、整數型、浮點型、元組(因為可變資料型別元素是可以被更改的,一旦集合中的元素被更改就有可能和別的元素一樣,導致集合出錯)。

2.集合型別操作符

S|T  並:返回一個新的集合,包括S和T的所有元素;

S-T 差:返回一個新的集合,包括S但不在T中的元素;

S&T交:返回一個新的集合,S和T共有的元素;

S^T補:返回一個新的元素,包含S和T中非相同的元素;

S<=T(S<T) 及S>=T(S>T):返回True或False,判斷兩者包含關係。

增強操作符有:

S|=T,S-=T,S&=T,S^=T即將上述返回的新的元素更新S集合。

>>> A={'py',12,123,12,1}      #{1, 123, 12, 'py'}
>>> B={'p','py',123,1}
>>> A|B
{1, 'p', 12, 123, 'py'}
>>> A-B
{12}
>>> A&B
{1, 123, 'py'}
>>> A^B
{'p', 12}
>>> A>B  #A不包含B
False
>>> A<B
False    #A不含於B
>>> C={1,123}
>>> C<A
True   #體會  >或<是判斷包含關係的

3.集合型別處理方法

>>> s={123,'df'}
>>> s.add(12)                    #s.add(x):x不在s集合中,將x增加到s
>>> s
{123, 12, 'df'}
>>> s.discard(1)                #s.discard(x):刪除s集合中的x元素,若x不存在不報錯
>>> s
{123, 12, 'df'}
>>> s.discard(12)
>>> s
{123, 'df'}
>>> s.remove(1)                     #s.remove(x):刪除s集合中的x元素,若x不存在報錯keyError
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    s.remove(1)
KeyError: 1
>>> s.remove(123)
>>> s
{'df'}
>>> s.clear()        #s.clear()清空s集合中的所有元素
>>> s
set()
>>> s={123,'df'}
>>> s.pop()  #s.pop()隨機返回一個元素,並在s中刪除該元素,若s為空產生KeyError異常
123
ss=s.copy()    #複製s集合
>>> ss
{123, 'df'}
>>> sss=s   #和s.copy()函式同效
>>> sss
{123, 'df'}
>>> len(s)  #s集合的元素個數
2
>>> 1 in s   #判斷元素是否在s中
False
>>> 123 in s
True

4.集合型別應用

1)包含關係比較

>>> s={123,'df',1,'a'}
>>> {'a'}<=s
True

2)資料去重:集合型別元素唯一的特點

>>> s=['p','py','p','y']
>>> s=set(s)
>>> s
{'y', 'py', 'p'}
>>> t=list(s)   #將集合型別轉為列表型別
>>> t
['y', 'py', 'p']