集合具有唯一性(集合中的元素各不相同),無序性,確定性(集合中的元素是不可改變的,不能是列表,字典以及集合本身)
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'}