一、集合的定義和特性
1、集合的定義:使用大括號 { } 或者 set() 函數創建集合
set1 = {"wangdoudou", 123, ("hello", 456)}
輸出結果:{123, ('hello', 456), 'wangdoudou'}
# 使用set()方法創建時裏面只能有一個元素
set2 = set("wangdoudou")
輸出結果:{'a', 'w', 'g', 'n', 'd', 'o', 'u'}
set3 = set(["wangdoudou", 123, ("hello", 456)])
輸出結果:{123, ('hello', 456), 'wangdoudou'}
2、特性
(1)、集合(set)是無序的
(2)、由不同的元素組成
(3)、元素類型必須是不可變的:數字,字符串,元組
(4)、創建一個空集合必須用 set() 而不是 { },因爲 { } 是用來創建一個空字典
(5)、集合去重性,相同的元素只保留一個
(6)、集合是可變類型
3、定義不可變集合:使用frozenset()方法
testset = frozenset("hello")
二、集合類的函數&方法
1、add(self, *args, **kwargs):添加元素,只能添加一個值
代碼示例:
testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.add("wangdoudou")
print("testset添加wangdoudou元素後的結果是:", testset)
testset.add(7)
print("testset添加7元素後的結果是:", testset)
輸出結果:
2、clear(self, *args, **kwargs):清空集合
代碼示例:
testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.clear()
print("清空後的testset=", testset)
輸出結果:
3、copy(self, *args, **kwargs):
代碼示例:
testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset2 = testset.copy()
print("拷貝後的集合testset2爲:", testset2)
輸出結果:
4、difference(self, *args, **kwargs):求兩個集合的差集,也就是左方獨有的元素,也可用減號運算符操作
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set3 = set1.difference(set2)
print("使用difference()函數求差集的結果是:", set3)
set4 = set2 - set1
print("使用-減號運算符求差集的結果是:", set4)
輸出結果:
5、difference_update(self, *args, **kwargs):先求兩個集合的差集,然後將差集賦值更新到原集合中
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set1.difference_update(set2)
print("使用difference_update()函數將差值更新到集合中:", set1)
輸出結果:
6、discard(self, *args, **kwargs):刪除指定元素,不管元素存不存在都可以
代碼示例:
testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.discard("sss")
print("testset刪除不存在的元素的結果是:", testset)
testset.discard(5)
print("testset刪除存在的元素的結果是:", testset)
輸出結果:
7、intersection(self, *args, **kwargs):求兩個集合的交集,相當於 集合1&集合2
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set3 = set1.intersection(set2)
print("使用intersection()函數求交集的結果是:", set3)
set4 = set1 & set2
print("使用&運算符求交集的結果是::", set3)
輸出結果:
8、intersection_update(self, *args, **kwargs):求兩個集合的交集並將交集更新到集合中
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set1.intersection_update(set2)
print("使用intersection_update()將交集更新到集合中;", set1)
輸出結果:
9、isdisjoint(self, *args, **kwargs):判斷兩個集合是否有交集,有,返回False,沒有,返回True
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
print("使用isdisjoint()函數判斷兩個集合是否有交集:", set1.isdisjoint(set2))
輸出結果:
10、issubset(self, *args, **kwargs):判斷集合1是否爲集合2的子集,相當於判斷 集合1 <= 集合2
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
print("使用issubset()函數判斷兩個集合的父子集關係:", set1.issubset(set2))
輸出結果:
11、issuperset(self, *args, **kwargs):判斷集合1是否爲集合2的父集 相當於判斷 集合1 >= 集合2
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
print("issuperset()函數判斷兩個集合的父子集關係:", set1.issuperset(set2))
輸出結果:
12、pop(self, *args, **kwargs):隨機刪除
代碼示例:
testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.pop()
print("testset隨機刪除後的結果是:", testset)
輸出結果:
13、remove(self, *args, **kwargs):指定元素刪除,指定的元素必須在集合中,否則會報錯
代碼示例:
testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.remove(2)
print("testset移除元素2之後的內容是:", testset)
輸出結果:
14、symmetric_difference(self, *args, **kwargs):求兩個集合的交叉補集(將兩個集合合併後去除相同的元素)
相當於 集合1 ^ 集合2
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set3 = set1.symmetric_difference(set2)
print("使用symmetric_difference()函數求交叉補集的結果是:", set3)
set4 = set1 ^ set2
print("使用^異或運算符計算集合的交叉補集的結果是:", set4)
輸出結果:
15、symmetric_difference_update(self, *args, **kwargs):求兩個集合的交叉補集並將交叉補集更新到集合中
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set1.symmetric_difference_update(set2)
print("使用symmetric_difference_update()函數將交叉補集更新到集合中:", set1)
輸出結果:
16、union(self, *args, **kwargs):求兩個集合的並集,相當於 集合1 | 集合2
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set3 = set1.union(set2)
print("使用union()函數求兩個集合的並集的結果是:", set3)
set4 = set1 | set2
print("使用|運算符求兩個集合的並集的結果是:", set3)
輸出結果;
17、update(self, *args, **kwargs):更新集合,參數爲可迭代序列
代碼示例:
set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set1.update(set2)
print("使用update()函數更新集合:", set1)
輸出結果: