集合类型
1、定义
在{ }内用逗号分隔开多个字符,多个元素满足以下三个条件:
- 集合内元素必须为不可变类型
s={1,2,3,4,[1,2,3,4]} #是错误的
-
集合内元素无序
-
集合内元素没有重复
s={1,2,3,4,5,1,1,2,1}
print(s)
s={} #默认是空组字典
#定义空集合
s=set{}
2、关系运算
取交集 &或者 intersection
f={"张三","李四","王五","老六","老七"}
f2={"王尼玛","张三","赵铁柱","陈胖胖","王五"}
res=f & f2
print(res)
print(f.intersection(f2))
取并集 | 或者union
f = {"张三", "李四", "王五", "老六", "老七"}
f2 = {"王尼玛", "张三", "赵铁柱", "陈胖胖", "王五"}
print(f | f2)
print(f.union(f2))
取差集 - 或者difference
取出某个集合特有的元素,此成员计算有前后顺序之分
f = {"张三", "李四", "王五", "老六", "老七"}
f2 = {"王尼玛", "张三", "赵铁柱", "陈胖胖", "王五"}
print(f-f2)
print(f.difference(f2))
对称差集 ^ 或者symmetric_difference
删除集合中共同的元素(多个集合中独有的元素的并集)
f = {"张三", "李四", "王五", "老六", "老七"}
f2 = {"王尼玛", "张三", "赵铁柱", "陈胖胖", "王五"}
print(f ^ f2)
print(f.symmetric_difference(f2))
父子集:只有当一个集合完全包含或者等于另一个集合,才叫父子集 issuperset
s={1,2,3,4,5,6,7,8,9}
s1={1,2,3,4}
print(s>s1)
print(f.issuperset(f2))
返回的值为True
3、去重
- 只能针对不可变类型去重
s=set([1,2,5,6,3,2,[1,2,3,6,5]])#会报错
- 无法保证原来的顺序
s=set(["hehe","haha",12,15,"heihei",12,15,"hehe"])
print(s)
4、其他内置方法
discard 删除集合中的元素,如果这个元素不存在于集合,什么也不做
s={1,2,3,4,5,6,7,8,9}
s.discard(3)
print(s)
相比于remove,当remove删除的元素不存在于集合时,会直接报错。所以discard的容错更高
difference_update
s={1,2,3,4,5,6,7,8,9}
s1={1,2,3,4}
s.difference(s1)
print(s)
对s集合没有如何的影响,如果:
s=s.difference(s1)#就会对s造成影响,而difference_update 就等同于它
print(s)
isdisjoint 如果两个集合没有交集就返回True,有则返回False
s={1,2,3,4,5,6,7,8,9}
s1={1,2,3,4}
print(s.isdisjoint(s1))