更新時間:2022年09月27日18時42分 來源:傳智教育 瀏覽次數(shù):
數(shù)學(xué)中,兩個集合關(guān)系的常見操作包括:交集、并集、差集、補集。設(shè)A.B是兩個集合,集合之間的關(guān)系如下。
(1)交集是指屬于集合A且屬于集合B的元素所組成的集合。
(2)并集是指集合A和集合B的元素合并在一起組成的集合。
(3)差集是指屬于集合4但不屬于集合B的元素所組成的集合。
(4)補集是指屬于集合A和集合B但不同時屬于兩者的元素所組成的集合。
Python 中集合之間支持前面所介紹的4種操作,操作邏輯與數(shù)學(xué)定義完全相同。Python提供了4種操作符以實現(xiàn)這4項操作,分別是交集(&)、并集(l)、差集(-)、補集(∧)。下面以兩個圓形表示集合A和B,并使用陰影部分顯示4種操作的結(jié)果,如圖下圖所示。
除此之外,Python還提供了4個增強操作符:l=、-=、&=、“=,它們與前面4個操作符的區(qū)別是,前者是生成了一個新的集合,而后者是更新了位于操作符左側(cè)的集合。接下來通過一張表羅列集合S和T之間關(guān)系的常見操作,具體如表所示。
假設(shè)有集合a={1,11,21,31,17}和集合b={0,11,20,17,30),它們執(zhí)行取交集、并集、差集、補集的示例如下:
>>>a={1, 11, 21, 31, 17} >>> b={0,11,20,17,30} >>>a|b #取a和b的并集 {0, 1, 11, 17, 20, 21, 30, 31} >>> a-b #取a和b的差集 {1,21,31} >>> a&b #取a和b的交集 {17, 11} >>> a∧b #取a和b的補集 {0, 1, 20, 21, 30, 31}
對于兩個集合A與B,如果集合A中的所有元素都是集合B的元素,那么集合B包含集合A,也就是說集合A是集合B的子集,集合B是集合A的超集;如果集合A中的所有元素都是集合B中的元素,且集合B中至少有一個元素不屬于集合A,那么集合A是集合B的真子集,集合B是集合A的真超集。
Python 中使用的比較運算符可以用來檢查某個集合是否為其他集合的子集或者超集,其中,“<”或者“<=”運算符用于判斷真子集和子集,“>”和“>=”運算符用于判斷的是真超集和超集。需要注意的是,“<”和“>”運算符支持的是嚴(yán)格意義定義的子集和超集,它們不允許兩個集合相等;而“<=”和“>=”運算符支持的是非嚴(yán)格意義定義的子集和超集,它們允許兩個集合是相等的。例如:
>>> set_ one = set('what') >>> set_two = set('hat') >>> set_one < set_two #判斷set_one是否為set_two 的嚴(yán)格子集 False >>> set_one >set_two #判斷set_one是否為set two的嚴(yán)格超集 True