Python——資料型別之set
本篇主要內容
• set集合的特點
• set集合的建立
• set集合的17個內建函式
• set集合的數學運算子號
1、set集合型別的特點。
1、無序
2、不同元素
3、元素必須不可變。(數字,字串,元組都屬於不可變的,列表,字典屬於可變的。)
2、set集合的建立
a={'Albert', 'QQ','XP'} print(type(a),a)
輸出
<class 'set'> {'Albert', 'QQ', 'XP'}
元素不可為可變資料型別
a={'Albert', 'QQ','XP',(1,2,3)} print(a) b={'Albert', 'QQ','XP',[1,2,3]} print(b)
輸出
{'XP', (1, 2, 3), 'Albert', 'QQ'} Traceback (most recent call last): File "C:/Users/admin/PycharmProjects/temp.py", line 12, in <module> b={'Albert', 'QQ','XP',[1,2,3]} TypeError: unhashable type: 'list'
也可以這樣新建一個集合
a=set(['Albert', 'QQ','XP']) print(a)
輸出
{'Albert', 'QQ', 'XP'}
也就是遍歷元素生成一個集合。
3、set的內建函式方法
(1)add(self, *args, **kwargs):這很簡單的往集合裡面放元素。
a=set(['Albert', 'QQ','XP']) a.add('yzp') print(a)
輸出
{'XP', 'Albert', 'QQ', 'yzp'}
從輸出可以看出來集合裡面元素的存放是無序的。
注:一次只能加一個不可變元素。
(2)clear(self, *args, **kwargs):
(3)copy(self, *args, **kwargs):複製一個一模一樣的集合(還是b=a與b=a.copy()的區別)
(4)difference(self, *args, **kwargs):得到多個集合的差集。
a={'Albert', 'QQ','XP'} b={'QQ','XP','yzp'} print(a.difference(b))
輸出
{'Albert'}
直白的說就是a有而b沒有的。
(5)difference_update(self, *args, **kwargs):求差集並更新這個集合
a={'Albert', 'QQ','XP'} b={'QQ','XP','yzp'} print(a.difference_update(b)) print(a)
輸出
None {'Albert'}
(6)discard(self, *args, **kwargs):刪除集合裡面的指定元素,如果不存在這個元素,什麼也不做(不報錯)
a={'Albert', 'QQ','XP'} a.discard('QQ') print(a)
輸出
{'XP', 'Albert'}
(7)intersection(self, *args, **kwargs):求交集
a={'Albert', 'QQ','XP'} b={'QQ','XP','yzp'} print(a.intersection(b))
輸出
{'QQ', 'XP'}
通俗的來說就是ab都有的
(8)intersection_update(self, *args, **kwargs):求交集並更新集合
a={'Albert', 'QQ','XP'} b={'QQ','XP','yzp'} print(a.intersection_update(b)) print(a)
輸出
None {'XP', 'QQ'}
(9)isdisjoint(self, *args, **kwargs):如果交集為空,返回true
a={'Albert', 'QQ','XP'} b={'QQ','XP','yzp'} print(a.isdisjoint(b))
輸出
False
(10)issubset(self, *args, **kwargs),判斷是不是被包含。
a={ 'QQ','XP'} b={'QQ','XP','yzp'} print(a.issubset(b))
輸出
True
(11)issuperset(self, *args, **kwargs):判斷是不是包含
a={ 'Albert','QQ','XP'} b={'QQ','XP'} print(a.issuperset(b))
輸出
True
(12)pop(self, *args, **kwargs):隨機刪除一個元素,如果集合為空,則報錯KeyError
a={ 'Albert','QQ','XP'} a.pop() print(a)
輸出
{'QQ', 'XP'}
(13)remove(self, *args, **kwargs):刪除指定元素,元素不存在則報錯KeyError
a={ 'Albert','QQ','XP'} a.remove('Albert') print(a) a.remove('yzp')
輸出
{'QQ', 'XP'} Traceback (most recent call last): File "C:/Users/admin/PycharmProjects/temp.py", line 13, in <module> a.remove('yzp') KeyError: 'yzp'
(14)symmetric_difference(self, *args, **kwargs):求交叉補集
a={ 'Albert','QQ','XP'} b={'QQ','XP','yzp'} print(a.symmetric_difference(b))
輸出
{'Albert', 'yzp'}
(15)symmetric_difference_update(self, *args, **kwargs):求交叉補集並更新集合
(16)union(self, *args, **kwargs):求並集
a={ 'Albert','QQ','XP'} b={'QQ','XP','yzp'} print(a.union(b))
輸出
{'XP', 'QQ', 'yzp', 'Albert'}
(17)update(self, *args, **kwargs):更新集合。也就是求並集並更新這個集合
a={ 'Albert','QQ','XP'} b={'QQ','XP','yzp'} a.update(b) print(a)
輸出
{'yzp', 'Albert', 'QQ', 'XP'}
4、數學運算子
求交集 a&b
求並集 a|b
求差集 a-b,或者b-a
求交叉補集 a^b
a={1,2,3} b={2,3,4} print(a&b) print(a|b) print(a-b) print(b-a) print(a^b)
輸出
{2, 3} {1, 2, 3, 4} {1} {4} {1, 4}