python 基本數據類型之set
阿新 • • 發佈:2017-10-23
數據類型 set python
set是一個無序且不重復的元素集合,相當於字典的鍵,不重復,不可變
一、set變量初始化
A = set() #註意在創建空集合的時候只能使用s=set(),因為s={}創建的是空字典 B = {"one", "two", "three", "four"} C = set(‘boy‘) D = set([‘y‘, ‘b‘, ‘o‘]) E = set({"k1": ‘v1‘, ‘k2‘: ‘v2‘}) F = {‘k1‘, ‘k2‘, ‘k2‘} G = {(‘k1‘, ‘k2‘, ‘k2‘)} print (A, type(A)) print (B, type(B)) print (C, type(C)) print (D, type(D)) print (E, type(E)) print (F, type(F)) print (G, type(G)) 運行結果: (set([]), <type ‘set‘>) (set([‘four‘, ‘three‘, ‘two‘, ‘one‘]), <type ‘set‘>) (set([‘y‘, ‘b‘, ‘o‘]), <type ‘set‘>) (set([‘y‘, ‘b‘, ‘o‘]), <type ‘set‘>) (set([‘k2‘, ‘k1‘]), <type ‘set‘>) (set([‘k2‘, ‘k1‘]), <type ‘set‘>) (set([(‘k1‘, ‘k2‘, ‘k2‘)]), <type ‘set‘>)
二、集合關系
print E & F # E 和 F的交集 print A | B # A 和 B的並集 print B - A # 求差集(項在B中,但不在A中) print D ^ E # 對稱差集(項在D或E中,但不會同時出現在二者中) 運行結果: set([‘k2‘, ‘k1‘]) set([‘four‘, ‘one‘, ‘three‘, ‘two‘]) set([‘four‘, ‘one‘, ‘three‘, ‘two‘]) set([‘y‘, ‘k2‘, ‘k1‘, ‘b‘, ‘o‘])
x = set([‘i‘, ‘e‘, ‘m‘, ‘d‘, ‘t‘]) y = set(["i", "d", "e", "a"]) print x.union(y) # 並集 set([‘e‘, ‘d‘, ‘i‘, ‘h‘, ‘j‘, ‘m‘, ‘t‘]) print x.intersection(y) # 交集 set([‘i‘, ‘e‘, ‘t‘]) print x.difference(y) # 差集 set([‘h‘, ‘j‘]) print x.symmetric_difference(y) # 對稱差 運行結果: set([‘a‘, ‘e‘, ‘d‘, ‘i‘, ‘m‘, ‘t‘]) set([‘i‘, ‘e‘, ‘d‘]) set([‘m‘, ‘t‘]) set([‘a‘, ‘m‘, ‘t‘])
se = set(["AA", "BB", "CC", "DD"]) ke = set(["AA", "BB"]) print se.difference(ke) # A中存在 ,B中不存在 ,生成一個新序列 se.difference_update(ke) # A中存在 ,B中不存在 ,更改原序列 print se print se.symmetric_difference(ke) # 對稱交集,生成新序列 se.symmetric_difference_update(ke) #對稱交集,更新原序列 print se 運行結果: set([‘CC‘, ‘DD‘]) set([‘CC‘, ‘DD‘]) set([‘AA‘, ‘CC‘, ‘DD‘, ‘BB‘]) set([‘AA‘, ‘BB‘, ‘CC‘, ‘DD‘])
三、包含關系
se = set(["AA", "BB", "CC", "DD"]) ke = set(["AA", "BB"]) print se.isdisjoint(ke) # 判斷兩個集合是不是不相交 print se.issubset(ke) # 判斷集合是不是被其他集合包含,等同於a<=b print se.issuperset(ke) # 判斷集合是不是包含其他集合,等同於a>=b 運行結果: False False True
四、添加元素
se = set(["AA", "BB", "CC"]) ke = set({"11", "22"}) print se se.add("dd") # 添加一個元素 print se se.update(["DD", "EE"]) # 添加多個元素 print se se.update(ke) # 添加另一個集合的元素 print se set([‘AA‘, ‘CC‘, ‘BB‘]) set([‘AA‘, ‘CC‘, ‘dd‘, ‘BB‘]) set([‘AA‘, ‘BB‘, ‘CC‘, ‘dd‘, ‘EE‘, ‘DD‘]) set([‘AA‘, ‘11‘, ‘22‘, ‘BB‘, ‘CC‘, ‘dd‘, ‘EE‘, ‘DD‘])
五、刪除元素
se = set(["AA", "BB", "CC", "DD"]) se.discard("AA") print se se.remove("BB") # 元素不存在時會拋出異常 print se se.pop() # 彈出一個值,隨機的,不能指定 print se 運行結果: set([‘CC‘, ‘DD‘, ‘BB‘]) set([‘CC‘, ‘DD‘]) set([‘DD‘])
六、去除重復值
a = [11, 22, 33, 44, 55, 11, 33] b = set(a) print list(b) 運行結果: [33, 11, 44, 22, 55]
七、常用方法
class set(MutableSet[_T], Generic[_T]): def add(self, element: _T) # 添加一個元素 def clear(self) # 清空集合 def copy(self) def difference(self, *s: Iterable[Any]) # A中存在 B中不存在,返回一個新集合,可賦值給其他變量 def difference_update(self, *s: Iterable[Any]) # A中存在 B中不存在,直接更改集合A def discard(self, element: _T) # 刪除單個元素 def intersection(self, *s: Iterable[Any]) def intersection_update(self, *s: Iterable[Any]) def isdisjoint(self, s: Iterable[Any]) # 判斷兩個集合是不是不相交 def issubset(self, s: Iterable[Any]) # 判斷集合是不是被其他集合包含,等同於a<=b def issuperset(self, s: Iterable[Any]) # 判斷集合是不是包含其他集合,等同於a>=b def pop(self) # 彈出一個元素,隨機的,不可指定 def remove(self, element: _T) # 移除單個元素,如果該元素不存在在該集合,則會報錯 def symmetric_difference(self, s: Iterable[_T]) def symmetric_difference_update(self, s: Iterable[_T]) def union(self, *s: Iterable[_T]) def update(self, *s: Iterable[_T]) # 更新單個元素,或其他集合
本文出自 “學無止境” 博客,請務必保留此出處http://20120809.blog.51cto.com/10893237/1975068
python 基本數據類型之set