為了方便大家拷貝筆記,本文采用md源碼格式
[toc]
# set 集合
- 作用:關係運算,去重
- 定義集合:{}內用逗號分隔每個元素都必須為**不可變類型**,元素不能重複,無序,一定是不能使用list,dict
## add
>add(self, *args, **kwargs) 添加,如果元素已經存在,這不起作用
```
E = {'a','b'}
E.add('c')
print(E)
結果:{'a', 'b', 'c'}
```
## clear
>clear(self, *args, **kwargs)
清空
```
E = {'a','b'}
E.clear()
print(E)
結果:set()
```
## copy
>copy(self, *args, **kwargs)
拷貝
```
E = {'a','b'}
v = E.copy()
print(v)
結果:{'b', 'a'}
```
## pop
>pop(self, *args, **kwargs)
隨機拿走一個元素,並取值,如果該集合為空,則引發KeyError
```
E = {'a','b','v'}
v = E.pop()
print(v)
結果:v
print(E)
結果:{'a','b'}
```
## remove
>remove(self, *args, **kwargs)
移除,如果元素不是成員,則引發KeyError。
```
E = {'a','b','v'}
E.remove('a')
print(E)
結果:{'b','v'}
```
## discard (移除)
>discard(self, *args, **kwargs) 移除,如果元素不是成員,則什麼都不做。
```
E = {"a",'b','v'}
E.discard('a')
print(E)
結果:{'b','v'}
```
## update
>update(self, *args, **kwargs)
批量添加,有相同的部分忽略
```
s1 = {'a','b','v'}
s2 = {'a','b','1'}
s1.update(s2)
print(s1)
結果:{'a','b','1','v'}
```
## difference 差集(-)
>difference(self, *args, **kwargs)
s1中存在,s2中不存在
```
s1 = {"a",'b','v','1','2'}
s2 = {"a",'b','v','3'}
v = s1.difference(s2)
print(s1 - s2) #可以使用 -
print(v)
```
## difference_update
>difference_update(self, *args, **kwargs)
s1中存在,s2中不存在,然後對s1清空,再重新複製
```
s1 = {"a",'b','v','1','2'}
s2 = {"a",'b','v','3'}
s1.difference_update(s2)
print(s1)
結果:{'1', '2'}
```
## intersection 交集(&)
>intersection(self, *args, **kwargs)
交集
```
s1 = {"a",'b','v'}
s2 = {"1",'b','v'}
v = s1.intersection(s2)
print(v)
print( s1 & s2)
{'v', 'b'}
{'v', 'b'}
```
## intersection_update
>intersection_update(self, *args, **kwargs)
取交集,然後對s1清空,然後在重新複製
```
s1 = {"a",'b','v'}
s2 = {"1",'b','v'}
s1.intersection_update(s2)
print(s1)
結果:{'b','v'}
```
## symmetric_difference 對稱差集(^)
>symmetric_difference(self, *args, **kwargs)
兩集合不同的元素
```
s1 = {'a','b','v'}
s2 = {'a','b','1'}
v = s1.symmetric_difference(s2)
print(v)
print(s1 ^ s2)
{'v', '1'}
{'v', '1'}
```
## symmetric_difference_update
>symmetric_difference_update(self, *args, **kwargs)
兩集合不同的元素,然後對s1清空,然後在重新複製
```
s1 = {'a','b','v'}
s2 = {'a','b','1'}
s1.symmetric_difference_update(s2)
print(s1)
結果:{'1','v'}
```
## union 並集(|)
>union(self, *args, **kwargs)
並集
```
s1 = {'a','b','v'}
s2 = {'a','b','1'}
v = s1.union(s2)
print(v)
print(s1 | s2)
{'a', 'b', 'v', '1'}
{'a', 'b', 'v', '1'}
```
## isdisjoint 沒有交集
>isdisjoint(self, *args, **kwargs)
是否沒有交集
```
s1 = {"a",'b','v'}
s2 = {"1",'b','v'}
v = s1.isdisjoint(s2)
print(v)
結果:False
```
## issubset 子集(<=)
>issubset(self, *args, **kwargs)
s1 是否是 s2的子集
```
s1 = {'b','v'}
s2 = {"1",'b','v'}
v = s1.issubset(s2)
print(v)
print(s1 <= s2)
結果:True
結果:True
```
## issuperset 父集(> >=)
>issuperset(self, *args, **kwargs)
s1 是否是 s2的父集
```
s1 = {'b','v'}
s2 = {"1",'b','v'}
v = s1.issuperset(s2)
print(v)
print(s1 > s2)
結果:False
結果:False
```