集合要点

形式

1
s = {1, 2, 3, 4}
  1. 元素是不可变型
  2. 元素排列无序
  3. 元素不重复

空集合

1
s = set()

类型转换

交集

1
2
3
4
5
friends1 = {'bage', 'bage1', 'bage2', 'bage3'}
friends2 = {'bage', 'bage9', 'bage2', 'bage6'}
# 交集
print(friends1 & friends2)
print(friends1.intersection(friends2))

差集

1
2
3
4
5
6
7
# 差集,有顺序
friends1 = {'bage', 'bage1', 'bage2', 'bage3'}
friends2 = {'bage', 'bage9', 'bage2', 'bage6'}
print(friends1 - friends2) # {'bage3', 'bage1'}
print(friends1.difference(friends2)) # {'bage3', 'bage1'}
print(friends2 - friends1) # {'bage9', 'bage6'}
print(friends2.difference(friends1)) # {'bage9', 'bage6'}

对称差集

1
2
3
# 对称差集 两个好友独有 去掉共同的好友
print(friends1 ^ friends2) # {'bage3', 'bage9', 'bage6', 'bage1'}
print(friends1.symmetric_difference(friends2)) # {'bage3', 'bage9', 'bage6', 'bage1'}

并集

1
2
3
# 并集
print(friends1 | friends2) # {'bage6', 'bage9', 'bage', 'bage3', 'bage2', 'bage1'}
print(friends1.union(friends2)) # {'bage6', 'bage9', 'bage', 'bage3', 'bage2', 'bage1'}

父子集

1
2
3
4
5
6
7
8
# 父子集
s1 = {1,2,3,4}
s2 = {1,2,3,4,5}
print(s1 > s2) # False
print(s1.issuperset(s2)) # False
print(s1 < s2) # True
print(s1.issubset(s2)) # True
print(s2 >= s1) # True

discard

删除discard删除没有的元素不会报错,而remove会报错

1
2
3
4
5
6
s = {1,2,34,5}
s.discard(1)
s.discard(9)
print(s)
s.remove(7)
print(s) # 报错

长度

成员运算

去重

1
2
3
4
5
6
# 去重
print(set([1, 2, 3, 1, 1, 1]))
l = [1,23,12,3]
l = set(l)
l = list(l)
print(l)

isdisjoint

当两个集合不是交集,没有相同的元素,结果为True

1
2
3
s = {1,2,34,5}
res = s.isdisjoint({9,8,76,0})
print(res) # True