集合是無序的不可重複的元素的集合。你能夠把它當作字典,可是隻有鍵沒有值。能夠用兩種方式建立集合:經過set函數或使用尖括號set語句:函數
In [133]: set([2, 2, 2, 1, 3, 3]) Out[133]: {1, 2, 3} In [134]: {2, 2, 2, 1, 3, 3} Out[134]: {1, 2, 3}
集合支持合併、交集、差分和對稱差等數學集合運算。考慮兩個示例集合:spa
In [135]: a = {1, 2, 3, 4, 5} In [136]: b = {3, 4, 5, 6, 7, 8}
合併是取兩個集合中不重複的元素。能夠用union
方法,或者|
運算符:3d
In [137]: a.union(b) Out[137]: {1, 2, 3, 4, 5, 6, 7, 8} In [138]: a | b Out[138]: {1, 2, 3, 4, 5, 6, 7, 8}
交集的元素包含在兩個集合中。能夠用intersection
或&
運算符:code
In [139]: a.intersection(b) Out[139]: {3, 4, 5} In [140]: a & b Out[140]: {3, 4, 5}
表3-1列出了經常使用的集合方法。blog
表3-1 Python的集合操做數學
全部邏輯集合操做都有另外的原地實現方法,能夠直接用結果替代集合的內容。對於大的集合,這麼作效率更高:io
In [141]: c = a.copy() In [142]: c |= b In [143]: c Out[143]: {1, 2, 3, 4, 5, 6, 7, 8} In [144]: d = a.copy() In [145]: d &= b In [146]: d Out[146]: {3, 4, 5}
與字典相似,集合元素一般都是不可變的。要得到相似列表的元素,必須轉換成元組:效率
In [147]: my_data = [1, 2, 3, 4] In [148]: my_set = {tuple(my_data)} In [149]: my_set Out[149]: {(1, 2, 3, 4)}
你還能夠檢測一個集合是不是另外一個集合的子集或父集:nio
In [150]: a_set = {1, 2, 3, 4, 5} In [151]: {1, 2, 3}.issubset(a_set) Out[151]: True In [152]: a_set.issuperset({1, 2, 3}) Out[152]: True
集合的內容相同時,集合纔對等:方法
In [153]: {1, 2, 3} == {3, 2, 1} Out[153]: True