Python學習之路【第三篇】--集合

語法結構:  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的父集。
    1
    2
    3
    4
    5
    6
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'C++'}
    print(s1.issuperset(s2))
     
    輸出:
    True
  • isdisjoint()
    語法結構:  set1.isdisjoint(set2)
    判斷set1和set2是否存在交集, 如果不存在返回True, 存在則返回False.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    s1 = {'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)。
    1
    2
    3
    4
    5
    6
    7
    8
    s1 = {'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)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    s1 = {'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.
    1
    2
    3
    4
    5
    6
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    print(s1.intersection(s2))
     
    輸出:
    {'Java'}
  • intersection_update()
    語法結構:  set1.intersection_update(set2)
    執行交集運算,並將結果覆蓋更新原集合set1(原來被調用操作的對象)。
    1
    2
    3
    4
    5
    6
    7
    s1 = {'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))
    1
    2
    3
    4
    5
    6
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    print(s1.union(s2))
     
    輸出:
    {'Shell', 'PHP', 'Ruby', 'C++', 'Python', 'Java'}
  • update()
    語法結構:  set1.update(obj)
    往集合中批量添加元素,添加的對象必須是可以迭代的對象(當然如果原集合中存在與迭代對象中重複的元素會做去重處理),本質上是通過循環,把傳入的迭代對象逐個添加更新到原集合中。
    1
    2
    3
    4
    5
    6
    7
    s1 = {'Java', 'PHP', 'Python', 'C++'}
    s2 = {'Java', 'Shell', 'Ruby'}
    s1.update(s2)
    print(s1)
     
    輸出:
    {'Python', 'Ruby', 'Shell', 'C++', 'Java', 'PHP'}
  • in 或not in
    成員運算函數同樣適用於集合,最後返回布爾值。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    s1 = {'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)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    s1 = {'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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章