python-集合類型


    集合具有唯一性(集合中的元素各不相同),無序性,確定性(集合中的元素是不可改變的,不能是列表,字典以及集合本身)

     1.add(self, *args, **kwargs),union(self, *args, **kwargs),update(self, *args, **kwargs)

      add方法:向字典中添加一個元素,當字典中存在這個元素時,不做任何操作(只能添加一個元素)

      union方法:傳入一個可迭代的參數,union方法將迭代出里面的元素,更新到字典的副本中,不改變原字典(傳入一個可迭代對象,添加多個元素,原字典不變)

      update方法:與union方法類似,不同的是update方法修改原字典(傳入一個可迭代對象,添加多個元素,修改原字典)

復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.add('php')
3 >>> set1
4 {'c', 'c++', 'php', 'python', 'java'}
5 >>> set1.add('php')
6 >>> set1
7 {'c', 'c++', 'php', 'python', 'java'}
復制代碼
復制代碼
 1 >>> set1 = {'python', 'java', 'c', 'c++'}
 2 >>> set2 = {'python',  'c', 'php'}
 3 >>> set1.union(set2)
 4 {'java', 'c', 'c++', 'php', 'python'}
 5 >>> set1.union(['linz'])
 6 {'c', 'c++', 'python', 'java', 'linz'}
 7 >>> set1.union('linz')
 8 {'c', 'c++', 'l', 'i', 'python', 'java', 'n', 'z'}
 9 #set1不發生改變
10 >>> set1
11 {'java', 'c', 'c++', 'python'}
復制代碼
復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.update({'java', 'php'})
3 >>> set1
4 {'java', 'c', 'c++', 'php', 'python'}
5 >>> set1.update('123')
6 >>> set1
7 {'java', 'c', 'c++', '1', '3', 'php', '2', 'python'}
復制代碼

    2.clear(self, *args, **kwargs)

    清空字典中的所有元素

1 >>> set1 = {'java', 'c', 'c++', '1', '3', 'php', '2', 'python'}
2 >>> set1.clear()
3 >>> set1
4 set()

    3.copy(self, *args, **kwargs)

    與列表中的copy方法類似,返回字典的副本,同樣的也是淺復制

復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.copy()
3 {'java', 'c', 'c++', 'python'}
4 >>> set2 = set1.copy()
5 >>> set2
6 {'java', 'c', 'c++', 'python'}
復制代碼

      4.difference(self, *args, **kwargs) 與 difference_update(self, *args, **kwargs)

    求兩個集合的差集。difference方法不修改set1,返回一個差集的字典副本;而difference_update方法直接修改set1,等於差集

                                

1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'c++', 'go', 'c', 'php'}
3 >>> set1.difference(set2)
4 {'java', 'python'}
1 #set1發生改變
2 >>> set1.difference_update(set2)
3 >>> set1
4 {'java', 'python'}

    5.discard(self, *args, **kwargs),pop(self, *args, **kwargs),remove(self, *args, **kwargs)

      pop方法隨機刪除集合中的一個元素,當集合為空的時候程序報錯

      discard從集合中移除特定元素。如果元素不是該集合成員,則什么也不做。

      remove從一個集合中移除一個元素,這個元素必須是集合的一個成員。如果元素不是成員,則引發鍵錯誤。

復制代碼
>>> set1 = {'python', 'java', 'c', 'c++'}
>>> set1.pop()
'java'
#當集合為空集時,程序報錯
>>> se1 = {}
>>> se1.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 arguments, got 0
復制代碼
復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.discard('python')
3 >>> set1
4 {'java', 'c', 'c++'}
5 #刪除'python'之后,再次刪除,程序不做任何事情
6 >>> set1.discard('python')
7 >>> set1
8 {'java', 'c', 'c++'}
復制代碼
復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set1.remove('python')
3 >>> set1
4 {'java', 'c', 'c++'}
5 #刪除'python'之后,再次刪除,程序報錯
6 >>> set1.remove('python')
7 Traceback (most recent call last):
8   File "<stdin>", line 1, in <module>
9 KeyError: 'python'
復制代碼

    6.intersection(self, *args, **kwargs) 與 intersection_update(self, *args, **kwargs)

      求set1與set2的交集;intersection方法不修改set1,返回一個交集的字典副本;而intersection_update方法直接修改set1,等於交集

                                 

復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'c++', 'go', 'c', 'php'}
3 >>> set1.intersection(set2)
4 {'c', 'c++'}
5 >>> set1
6 {'java', 'c', 'c++', 'python'}
復制代碼
復制代碼
1 #set1發生改變
2 >>> set1 = {'python', 'java', 'c', 'c++'}
3 >>> set2 = {'c++', 'go', 'c', 'php'}
4 >>> set1.intersection_update(set2)
5 >>> set1
6 {'c', 'c++'}
復制代碼

    7.isdisjoint(self, *args, **kwargs)

    判斷兩個集合的交集是不是空集,如果是空集返回True

復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'c++', 'go', 'c', 'php'}
3 >>> set1.isdisjoint(set2)
4 False
5 >>> set2 = {'go', 'php'}
6 >>> set1.isdisjoint(set2)
7 True
復制代碼

    8.issubset(self, *args, **kwargs) 與 issuperset(self, *args, **kwargs)

    set1.issubset(set2),判斷set1是不是set2 的子集,如果是子集,則返回True

    set1.issuperset(set2),判斷set1是不是set2的父集(即set2是不是set1的子集),如果是父集,則返回True

復制代碼
1 >>> set2 = {'python', 'java', 'c', 'c++'}
2 >>> set1 = {'c++', 'c'}
3 >>> set1.issubset(set2)
4 True
5 >>> set1 = {'c++', 'c', 'go'}
6 >>> set1.issubset(set2)
7 False
復制代碼
復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'c++', 'c'}
3 >>> set1.issuperset(set2)
4 True
5 >>> set2 = {'c++', 'c', 'go'}
6 >>> set1.issuperset(set2)
7 False
復制代碼

    9.symmetric_difference(self, *args, **kwargs) 與 symmetric_difference_update(self, *args, **kwargs)

     求兩個集合交叉補集,symmetric_difference方法不修改set1,返回一個交叉補集的字典副本;而symmetric_difference_update方法直接修改set1,等於交叉補集

         

復制代碼
1 >>> set1 = {'python', 'java', 'c', 'c++'}
2 >>> set2 = {'php', 'go', 'c', 'c++'}
3 >>> set1.symmetric_difference(set2)
4 {'php', 'python', 'java', 'go'}
5 >>> set1
6 {'java', 'c', 'c++', 'python'}
7 >>> set1.symmetric_difference_update(set2)
8 >>> set1
9 {'python', 'php', 'java', 'go'}
復制代碼

 


免責聲明!

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



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