集合的其他内置方法

交叉补集:先合并再减去共有的

python_1 = ['lcg', 'szw', 'zjw']
linux_1 = ['lcg', 'szw','liushui']
p_s=set(python_1)
l_s=set(linux_1)
print(p_s,l_s)
print(p_s.symmetric_difference(l_s))#求交叉补集集
print(p_s^l_s)              #求交叉补集集

输出

{'lcg', 'zjw', 'szw'} {'lcg', 'szw', 'liushui'}
{'zjw', 'liushui'}
{'zjw', 'liushui'}

判断是否有交集

#判断是否有交集 有False 无True
s1={1,2}
s2={3,4}
print(s1.isdisjoint(s2))

输出

True

判断子父集关系

#判断子集
s1={1,2}
s2={1,2,3,}
print(s1.issubset(s2))#  s1是否是s2的子集
print(s2.issubset(s1))#  s2是否是s1的子集
print(s2.issuperset(s1))#判断s2是否是s1的父集

输出

True
False
True

更新

#更新
s1={1,2}
s2={1,2,3,}
s1.update(s2)
print(s1)#更新为s2,add是在后面添加一个值

输出

{1, 2, 3}

定义一个不可变的集合

#定义一个不可变的集合
s=frozenset('hello')
print(s)
s.add

报错

AttributeError: 'frozenset' object has no attribute 'add'
#定义一个不可变的集合
s=frozenset('hello')
print(s)
s.pop

报错

AttributeError: 'frozenset' object has no attribute 'pop'
列表与集合之间的转换
# 列表与集合之间的转换
names = ['alex', 'alex', 'wupeiqi']
s = set(names)
print(s)
names = list(s)
print(names)

输出

{'alex', 'wupeiqi'}
['alex', 'wupeiqi']
# 列表与集合之间的转换
names = ['alex', 'alex', 'wupeiqi']
s = set(names)
names = list(set(names))
print(names)

输出

['alex', 'wupeiqi']
原文地址:https://www.cnblogs.com/liushuizs/p/10262520.html