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))

 



原文地址:https://www.cnblogs.com/jinf/p/10507445.html