語法結構: set1.issubset(set2)
判斷集合set1是否爲set2的子集,返回布爾值。
1
2
3
4
5
6
|
s1 = { 'Java' , 'PHP' , 'Python' , 'C++' } s2 = { 'Java' , 'Shell' , 'Ruby' } print (s1.issubset(s2)) 輸出: False |
- issuperset()
語法結構: set1.issuperset(set2)
判斷set1是否爲set2的父集。
123456s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'C++'
}
print
(s1.issuperset(s2))
輸出:
True
- isdisjoint()
語法結構: set1.isdisjoint(set2)
判斷set1和set2是否存在交集, 如果不存在返回True, 存在則返回False.
123456789s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'C++'
}
s3
=
{
'GO'
}
print
(s1.isdisjoint(s2))
print
(s1.isdisjoint(s3))
輸出:
False
True
- symmetric_difference()
語法結構:set1.symmetric_difference(set2)或set1 ^ set2
返回set1和set2的對稱式差集,相當於執行set1.difference(set2)和set2.difference(set1),以新的set集合形式返回set1和set2中差異部分元素(不在兩者中同時存在)集合(僅在set1和set2中出現過一次的元素不影響原set1和set2)。
12345678s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'Shell'
,
'Ruby'
}
print
(s1.symmetric_difference(s2))
print
(s1 ^ s2)
輸出:
{
'PHP'
,
'Ruby'
,
'Shell'
,
'C++'
,
'Python'
}
{
'PHP'
,
'Ruby'
,
'Shell'
,
'C++'
,
'Python'
}
- symmetric_difference_update()
語法結構:set1.symmetric_difference(set2)
返回set1和set2的對稱式差集,並覆蓋更新原set1集合(原來被調用操作的對象),即執行set1 = set1.symmetric_difference(set2)
123456789s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'Shell'
,
'Ruby'
}
print
(s1.symmetric_difference(s2))
s1.symmetric_difference_update(s2)
print
(s1)
輸出:
{
'PHP'
,
'C++'
,
'Shell'
,
'Python'
,
'Ruby'
}
{
'Python'
,
'Shell'
,
'Ruby'
,
'PHP'
,
'C++'
}
- intersection()
語法結構: set1.intersection(set2)或set1 & set2
交集運算,以set方式返回set1和set2的交集部分(同時存在的元素),不影響原集合set1和set2.
123456s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'Shell'
,
'Ruby'
}
print
(s1.intersection(s2))
輸出:
{
'Java'
}
- intersection_update()
語法結構: set1.intersection_update(set2)
執行交集運算,並將結果覆蓋更新原集合set1(原來被調用操作的對象)。
1234567s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'Shell'
,
'Ruby'
}
s1.intersection_update(s2)
print
(s1)
輸出:
{
'Java'
}
- union()
語法結構: set1.union(set2)或set1 | set2
執行並集計算,合併set1和set2中的對象並做去重處理,最後以集合形式返回結果。
綜合上述關係運算函數,可確定並集計算相當於對稱差集與交集的並集計算,即合併重複重現的對象和不重複出現的對象,set1.union(set2) = (set1.symmetric_difference(set2)).union(set1.intersection(set2))123456s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'Shell'
,
'Ruby'
}
print
(s1.union(s2))
輸出:
{
'Shell'
,
'PHP'
,
'Ruby'
,
'C++'
,
'Python'
,
'Java'
}
- update()
語法結構: set1.update(obj)
往集合中批量添加元素,添加的對象必須是可以迭代的對象(當然如果原集合中存在與迭代對象中重複的元素會做去重處理),本質上是通過循環,把傳入的迭代對象逐個添加更新到原集合中。
1234567s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'Shell'
,
'Ruby'
}
s1.update(s2)
print
(s1)
輸出:
{
'Python'
,
'Ruby'
,
'Shell'
,
'C++'
,
'Java'
,
'PHP'
}
- in 或not in
成員運算函數同樣適用於集合,最後返回布爾值。
12345678910s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
print
(
'Java'
in
s1)
if
'Go'
in
s1:
print
(
"OK"
)
else
:
print
(
"Not OK"
)
輸出:
True
Not OK
- <=
語法結構: set1 <= set2
判斷set1中的每個元素是否都在set2中,即判斷set1是否爲set2的子集,等同於set1.issubset(set2)
12345678910111213s1
=
{
'Java'
,
'PHP'
,
'Python'
,
'C++'
}
s2
=
{
'Java'
,
'Shell'
,
'Ruby'
}
s3
=
s1.union(s2)
print
(s1 <
=
s2)
print
(s1.issubset(s2))
print
(s1 <
=
s3)
print
(s1.issubset(s3))
輸出:
False
False
True
True
3.3 關係測試運算符
常見的關係測試運算符如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
s1 = { 'Java' , 'PHP' , 'Python' , 'C++' } s2 = { 'Java' , 'Shell' , 'Ruby' } print (s1 - s2) print (s1.difference(s2)) print ("") print (s1 & s2) print (s1.intersection(s2)) print ("") print (s1 | s2) print (s1.union(s2)) print ("") print (s1 ^ s2) print (s1.symmetric_difference(s2)) print ("") print (s1 < = s2) print (s1.issubset(s2)) 輸出: { 'C++' , 'PHP' , 'Python' } { 'C++' , 'PHP' , 'Python' } { 'Java' } { 'Java' } { 'C++' , 'Python' , 'Shell' , 'Ruby' , 'Java' , 'PHP' } { 'C++' , 'Python' , 'Shell' , 'Ruby' , 'Java' , 'PHP' } { 'C++' , 'Shell' , 'Python' , 'Ruby' , 'PHP' } { 'C++' , 'Shell' , 'Python' , 'Ruby' , 'PHP' }<br><br> False <br> False |