python--002--数据类型(set)
集合:set
特点:
1)不同元素组成
2)无序
3)集合中元素必须是不可变类型
s={1,2,4,5,8}
print(type(s))
output:<class 'set'>
s=set('hello')
print(s)
output:{'h', 'l', 'e', 'o'}
s=set(["abc","abc","sb"])
print(s)
output:{'sb', 'abc'}
集合set的方法:
ss=s.copy()
print(ss)
s.clear()
s.add(3)
s.pop()
s.remove("sb")
s.remove("dhdhdkddkkd") # 删除元素不存在会报错
s.discard("sbbbbb") # 删除元素不存在不会报错
集合关系运算交、差、并集
python_1=['lcg','szw','zjw']
linux_1=['lcg','szw',"sb"]
p_s=set(python_1)
l_s=set(linux_1)
print(p_s,l_s)
#求交集
print(p_s.intersection(l_s))
print(p_s&l_s)
#求并集
print(p_s.union(l_s))
print(p_s|l_s)
#求差集
print(p_s.difference(l_s))
print("差集:",p_s-l_s)
print(l_s.difference(p_s))
print("差集:",l_s-p_s)
#交叉补集
print('交叉补集',p_s.symmetric_difference(l_s))
print('交叉补集',p_s^l_s)
#difference_update求出差集后,并更新p_s
p_s.difference_update(l_s)
print(p_s)
其他方法:
#isdisjoint如果两个集合交集结果为空,则返回True
s1={1,2}
s2={3,5}
print(s1.isdisjoint(s2))
#issubset相当于s1<=s2即s1是s2的子集,issuperset相当于s1>=s2即s1是s2的父集
s1={1,2}
s2={1,2,3}
print(s1.issubset(s2))#s1是s2的子集
print(s2.issubset(s1))#返回False
print(s2.issuperset(s1))#s1是s2的父集
#update相当于将s2的值更新给s1
s1.update(s2)#更新多个值,可传入字典、列表
print(s1)
s1.add(5)#更新一个值
s1.union(s2)#不更新
frozenset定义为了不可变类型,没有add等方法
s=frozenset('hello')
# s没有add等方法
#实现简单去重
names=['wendy','wendy','xiaozhu']
s=set(names)
print(s)
#将names变为之前的list,不过顺序变了
names=list(s)
print(names)
#上述几句变为一句,简单去重,顺序会变
names=list(set(names))