1. 程式人生 > >少說話多寫程式碼之Python學習058——標準模組(集合)

少說話多寫程式碼之Python學習058——標準模組(集合)

來看看集合(set)的使用。集合類set在sets模組中,Python2.3之後,集合類已經成為語言的一部分,無需再匯入sets模組。
先看看簡單的使用,

print(set(range(10)))
輸出
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

集合中重複值是被忽略的,比如這樣,

single=set([1,6,7,8,6,6,6,8])
print(single)
輸出
{8, 1, 6, 7}

元素的順序,不會依照宣告時的順序,

sort = set(['陸小鳳','西門吹雪','葉孤城'])
print(sort)
輸出
{'葉孤城', '西門吹雪', '陸小鳳'}

集合可以做一些運算,定義了集合seta和setb,做如下運算,
比如並集

seta=set([10,20,40])
setb=set([30,40,50])
setc = seta.union(setb)
print(setc)
輸出
{50, 20, 40, 10, 30}

按位與,

print(seta |setb)
輸出
{50, 20, 40, 10, 30}

其他一些運算,

setd =seta&setb
print(setd.issubset(seta))
輸出:True

print(setd <=seta)
輸出:True
print(setd.issuperset(seta))
輸出:False
print(seta.intersection(setb))
輸出:{40}
print(seta&setb)
輸出:{40}
print(seta.difference(setb))
輸出:{10, 20}
print(seta-setb)
輸出:{10, 20}
print(seta.symmetric_difference(setb))
輸出:{10, 50, 20, 30}
print(seta^setb)
輸出:{10, 50, 20, 30}
print(seta.copy())
輸出:{40, 10, 20}
print(seta.copy() is seta)
輸出:False

集合是可變的,不能作為字典中的鍵。而集合本身只能包含不可變,所以集合不能包含其他集合,如下這樣是錯誤的,

Traceback (most recent call last):
  File "D:/work/Python/StandardLibrary4.py", line 40, in <module>
    print(a.add(b))
TypeError: unhashable type: 'set'

工程檔案下載:https://download.csdn.net/download/yysyangyangyangshan/10838713