Python 基礎 - Day 2 Learning Note - Set 集合
阿新 • • 發佈:2017-06-28
基礎 差集 可變集合 自動 lap 完全 添加 key值 com
集合是一個無序的,不重復的數據組合,它的主要作用如下:
- 去重,把一個列表變成集合,就自動去重了
- 關系測試,測試兩組數據之前的交集、差集、並集等關系
- SET的分為 可變集合 和 不可變集合(frozon set)。
- 可變集合可以添加或者刪除,但是frozon set 不可以
- 可變集合不是可哈希的,所以不可以做DICTIONARY的KEY。但是frozon set有哈希值,可以作為key值。
創建
set 和 list([])及dictionary({})不同,沒有語法格式。只有用工廠方法 set() or frozenset() 創建。
list_1= [1,4,8,9,4,10,12] list_1View Code= set(list_1) print(list_1,type(list_1))
{1, 4, 8, 9, 10, 12} <class ‘set‘>
添加
list_3.add(‘c‘)
print(list_3)
list_4.update([888,777])
print(list_4)
{1, 3, ‘c‘, 7}
{2, 4, 6, 777, 888}
刪除
list_3.remove(3) #remove 和 discard 的區別在於是否報錯。remove會,discard比較友好 - do nothing if the element does not exit in the set. print(list_3)
{1, ‘c‘, 7}
*pop() 隨機刪
關系測試
list_1 = set([1,4,8,9,4,10,12]) list_2 = set([2,3,4,8,11,12]) print(list_1.intersection(list_2)) #交集,可用 list_1 & list_2 代替
{8, 4, 12}
print(list_1.union(list_2)) #並集並去重,可用 list_1 | list_2 代替
{1, 2, 3, 4, 8, 9, 10, 11, 12}
print(list_1.difference(list_2)) #差集=in list_1 but not in list_2; 可用 list_1 - list_2
{1, 10, 9}
print(list_1.issubset(list_2)) #判斷是否子集 print(list_1.issuperset(list_2)) #判斷是否父集
False
print(list_1.symmetric_difference(list_2)) #對稱差集:並集-交集部分; 可用 list_1 ^ list_2
{1, 2, 3, 9, 10, 11}
list_3 = set([1,3,7]) list_4 = set([2,4,6]) print(list_3.isdisjoint(list_4)) #是否完全無關?
True
成員關系 (in, not in) & 等價/不等價
和其他容器類型一樣, set 仍舊支持 in 或 not in,等價不等價等操作符號, 同時由len()得到set 的基數(大小), 用for循環叠代集合的成員。但是不可以創建索引或切片。
Python 基礎 - Day 2 Learning Note - Set 集合