# Auther: Aaron Fan
'''
集合是一個無序的,不重復的數據組合,它的主要作用如下:
去重,把一個列表變成集合,就自動去重了
關系測試,測試兩組數據之前的交集、差集、並集等關系
'''
list_1 = [1,3,4,7,3,6,7,9]
#去重
list_1 = set(list_1)
list_2 = set([2,6,0,66,22,8,4])
list_3 = set([1,3,7])
print(list_1)
print(list_2)
print(list_3)
print("---------------------------")
#關系測試
#交集(兩個列表里面都有的值,這里是4、6):
print(list_1.intersection(list_2))
#並集(把兩個列別合並起來,然后去重):
print(list_1.union(list_2))
#差集(把list_1里面有的而list_2里面沒有的取出來):
print(list_1.difference(list_2))
#對稱差集(兩個列表里面,互相沒有的取出來,也就是只去掉那些互相都有的值)
print(list_1.symmetric_difference(list_2))
#子集(判斷list_1是否包含了list_3里面的所有值)
print(list_3.issubset(list_1))
#父集(判斷list_1是否為list_3的父集)
print(list_1.issuperset(list_3))
#無交集(判斷list_3和list_4是否完全沒有任何交集)
list_4 = set([5,6,8])
print(list_3.isdisjoint(list_4))
#-----------------------關系測試的另一種寫法:
'''
s = set([3,5,9,10]) #創建一個數值集合
t = set("Hello") #創建一個唯一字符的集合
a = t | s # t 和 s的並集
b = t & s # t 和 s的交集
c = t – s # 求差集(項在t中,但不在s中)
d = t ^ s # 對稱差集(項在t或s中,但不會同時出現在二者中)
基本操作:
t.add('x') # 添加一項
s.update([10,37,42]) # 在s中添加多項
使用remove()可以刪除一項:
t.remove('H') #有就刪除,沒有就報錯
t.pop() #隨機彈出一個
t.discard('H') #有就刪除,沒有也不會報錯
len(s)
set 的長度
x in s
測試 x 是否是 s 的成員
x not in s
測試 x 是否不是 s 的成員
s.issubset(t)
s <= t
測試是否 s 中的每一個元素都在 t 中
s.issuperset(t)
s >= t
測試是否 t 中的每一個元素都在 s 中
s.union(t)
s | t
返回一個新的 set 包含 s 和 t 中的每一個元素
s.intersection(t)
s & t
返回一個新的 set 包含 s 和 t 中的公共元素
s.difference(t)
s - t
返回一個新的 set 包含 s 中有但是 t 中沒有的元素
s.symmetric_difference(t)
s ^ t
返回一個新的 set 包含 s 和 t 中不重復的元素
s.copy()
返回 set “s”的一個淺復制
'''