集合與不可變集合


集合於不可變集合

一、集合

集合是一種無序的序列。集合中的元素具有唯一性,即集合中不存在兩個同樣的元素。

1.集合的格式

通常用一對大括號“{}”來創建集合:

s = {1,2,5}

也可以使用set()函數來生成:

s = set([1,3,2,1])
print(s)     #結果為:{1,3,2}

2.集合的運算

(1)交集

兩個集合的交集可以用操作符" & "實現,也可以用.intersection()方法得到兩個集合的交集,返回兩個集合共有元素的集合。

a = {1,5,6,9}
b = {1,4,6,8}
s = a.intersection(b)
v = a & b
print(s)     #結果為:{1, 6}
print(v)     #結果為:{1, 6}

(2)並集

兩個集合的並集可以用操作符" | "實現,也可以用.union()方法得到兩個集合的並集,返回兩個集合所有元素的集合

a = {1,5,6,9}
b = {1,4,6,8}
s = a.union(b)
v = a | b
print(s)      #結果為:{1, 4, 5, 6, 8, 9}
print(v)      #結果為:{1, 4, 5, 6, 8, 9}

(3)差集

兩個集合的差集可以用操作符" - "實現,也可以用.difference()方法得到兩個集合的差集,返回在第一個集合而不在第二個集合的元素組成的集合。

a = {1,5,6,9}
b = {1,4,6,8}
s = a.difference(b)
v = b - a
print(s)    #結果為:{5,9}
print(v)    #結果為:{4,8}

(4)交叉補集

兩個集合的差集可以用操作符" ^ "實現,也可以用.symmetric_difference()方法得到兩個集合的交叉補集,返回兩個集合並集與交集的差。

a = {1,5,6,9}
b = {1,4,6,8}
s = a.symmetric_difference(b)
v = b ^ a
print(s)      #結果為:{4, 5, 8, 9}
print(v)      #結果為:{4, 5, 8, 9}

3.集合的包含關系

(1)子集

判斷子集關系可以用運算符" <= "實現,也可以用.issubset()方法來判斷是不是某個集合的子集。

a = {1,5,6,9}
b = {1,6}
print(b<=a)      #結果為:True
print(b.issubset(a))     #結果為:True

(2)父集

判斷父集關系可以用運算符" >= "實現,也可以用.issuperset()方法來判斷是不是某個集合的父集。

a = {1,5,6,9}
b = {1,6}
print(a>=b)       #結果為:True
print(a.issuperset(b))      #結果為:True

4.集合的方法

(1).add()方法

.add()方法就是添加單個元素。

b = {1,6}
b.add(5)
print(b)      #結果為:{1,5,6}

(2).update()方法

.update()方法用來向集合添加多個元素,接受一個序列作為參數。

b = {1,6}
b.update([1,5,7])
print(b)     #結果為:{1, 5, 6, 7}

(3).remove()方法

.remove()方法可以從集合中移除單個指定元素,元素不存在會報錯。

b = {1,6,5}
b.remove(5)
print(b)     #結果為:{1,6}

(4).pop方法

.pop方法隨機地從集合中刪除並返回一個元素。

b = {1,6,5,'alex'}
v = b.pop()
print(b)     #返回刪除元素的集合
print(v)     #隨機被刪除的元素

(5).discard()方法

.discard()方法作用跟.remove()方法一樣,區別在於刪除不存在元素不會報錯。

b = {1,6,5,'alex'}
b.discard(3)
print(b)           #結果為:{1, 'alex', 5, 6}

5.判斷從屬關系

b = {1,6,5,'alex'}
s = 5 in b
print(s)     #結果為:True

二、不可變集合

不可變集合是一種不可變類型,一旦創建就不能改變,其構建方法如下:

s = frozenset([1,6,'alex',1])
print(s)    #結果為:frozenset({1, 'alex', 6})

PS:以上代碼得到的結果集合是可變的,不是唯一值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM