Python集合操作方法詳解
阿新 • • 發佈:2020-02-10
集合是無序的,天生不重複的資料組合,它的作用如下:
- 去重,即:把一個列表變成集合,就去重了
- 關係測試,即:測試兩組集合的交集、並集和差集等
一、集合常用方法總結
二、定義
1、語法
>>> name_1 = [1,2,3,4,7,8,10] #把列表轉換為集合 >>> name_1 = set(name_1) #轉換後,去重 >>> print(name_1,type(name_1)) {1,10} <class 'set'>
三、關係測試
1、交集(intersection())
>>> name_1 = [1,10] >>> name_2 = [1,5,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出結果 >>> name_1.intersection(name_2) {8,1,10,3}
2、並集(union())
>>> name_1 = [1,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出結果 >>> name_1.union(name_2) {1,10}
3、差集(difference())
>>> name_1 = [1,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出結果 >>> name_1.difference(name_2) {2,7}
特別提示:差集取的是數值在第一個集合中,但是不在第二個集合中(在我不在你)
4、issubset()
判斷一個集合是否是另一個集合的子集
>>> name_1 = [1,10] >>> name_3 = [1,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #輸出結果 >>> name_3.issubset(name_1) True
5、issuperset()
判斷一個集合是否是另一個集合的父集
>>> name_1 = [1,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #輸出結果 >>> name_1.issuperset(name_3) True
6、對稱差集(symmetric_difference())
把兩個集合沒有交集的數值取出來
>>> name_1 = [1,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出結果 >>> name_1.symmetric_difference(name_2) {2,7}
7、isdisjoint()
判斷兩個集合是否有交集,沒有交集,則返回True
>>> name_1 = [1,10] >>> name_3 = [11] >>> name_1 = set(name_1) >>> name_2 = set(name_2) >>> name_3 = set(name_3) #有交集 >>> name_1.isdisjoint(name_2) False #無交集 >>> name_1.isdisjoint(name_3) True
四、關係測試(特殊符號)
1、交集(&)
>>> name_1 = [1,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #結果輸出 >>> name_1 & name_2 {8,3}
2、並集(|)
>>> name_1 = [1,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #結果輸出 >>> name_1 | name_2 {1,10}
3、差集(-)
>>> name_1 = [1,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #結果輸出 >>> name_1 - name_2 {2,7}
4、對稱差集(^)
>>> name_1 = [1,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出 >>> name_1 ^ name_2 {2,7}
5、是否是子集(<=)
>>> name_1 = [1,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #輸出 >>> name_3 <= name_1 True
6、是否是父集(>=)
>>> name_1 = [1,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #輸出 >>> name_1 >= name_3 True
五、基本操作
1、新增(add())
>>> name_2 = [1,10] >>> name_2 = set(name_2) #新增已存在,不報錯 >>> name_2.add(1) >>> name_2 {8,5} #新增不存在,新增一個新的數值 >>> name_2.add(11) >>> name_2 {1,11}
2、新增多項(update())
>>> name_2 = [1,10] >>> name_2 = set(name_2) >>> name_2.update([12,13,14]) #輸出結果 >>> name_2 {1,12,14}
3、刪除(remove(),pop(),discard())
①remove()
>>> name_2 = [1,10] >>> name_2 = set(name_2) >>> name_2 {8,5} >>> name_2.remove(1) #輸出 >>> name_2 {8,5} #刪除不存在的元素,會報錯 >>> name_2.remove(1) Traceback (most recent call last): File "<input>",line 1,in <module> KeyError: 1
特別提示:用remove刪除時,當元素不存在,會報錯
②pop()
>>> name_2 = [1,5} #輸出 >>> name_2.pop() 8
特別提示:pop是隨機刪除集合中的某個元素,並且列印
③discard()
>>> name_2 = [1,10] >>> name_2 = set(name_2) >>> name_2.discard(10) #輸出結果 >>> name_2 {8,5} #刪除不存在元素,不報錯 >>> name_2.discard(10)
特別提示:用discard刪除不存在的元素,不會出現報錯
4、長度(len())
>>> name_1 = [1,10] >>> name_1 = set(name_1) #結果輸出 >>> len(name_1) 7
5、x in s
測試 x 是否是 s 的成員
>>> name_1 = [1,10] >>> name_1 = set(name_1) #結果輸出 >>> 1 in name_1 True
6、x not in s
測試 x 是否不是 s 的成員
>>> name_1 = [1,10] >>> name_1 = set(name_1) #輸出 >>> 12 not in name_1 True
更多關於Python集合操作方法可檢視下面的相關連結