day3-集合
概述
定义:是一个无序的,不重复的数据组合,它的主要作用如下:
- 1.去重,把一个列表变成集合,就自动去重了
- 2.关系测试,测试两组数据之前的交集、差集、并集等关系
创建集合
list1=[1,3,5,6,7,8,5,3,1] list1=set(list1) #将列表转换为集合 print(list1,type(list1)) #自动去重 #输出 {1, 3, 5, 6, 7, 8} <class 'set'>
关系测试
1.交集(&)
>>>list1=[1,3,5,6,7,8,5,3,1] >>>list2=[22,33,44,55,66,6,7] >>>list1=set(list1) #创建集合 >>>list2=set(list2)
>>>list1.intersection(list2) {6,7} 或 >>>list1&list2 {6,7}
2.并集(|)
>>>list1=[1,3,5,6,7,8,5,3,1] >>>list2=[22,33,44,55,66,6,7] >>>list1=set(list1) >>>list2=set(list2)
>>>list1.union(list2) {1,33,3,66,5,6,7,8,44,22,55} 或 >>>list1|list2 {1,33,3,66,5,6,7,8,44,22,55}
3.差集(-)
差集取的是数值在第一个集合中,但是不在第二个集合中
#1里面有,2里面没有的 >>>list1=[1,3,5,6,7,8,5,3,1] >>>list2=[22,33,44,55,66,6,7] >>>list1=set(list1) >>>list2=set(list2)
>>>list1.difference(list2) {8,1,3,5} 或 >>>list1-list2 {8,1,3,5} #2里面有,1里面没有的 >>>list2.difference(list1) {33,66,44,22,55} 或 >>>list2-list1 {33,66,44,22,55}
4.对称差集(^)
把两个集合没有交集的数值取出来
>>>list1=[1,3,5,6,7,8,5,3,1] >>>list2=[22,33,44,55,66,6,7] >>>list1=set(list1) >>>list2=set(list2)
>>>>list1.symmetric_difference(list2) {1,66,3,5,8,22,33,44,55} 或 >>>list1^list2) {1,66,3,5,8,22,33,44,55}
5.是否是子集(<=)
一个集合是否是另一个集合的子集,是,则True,否,则False
>>>list1=[1,3,5,6,7,8,5,3,1] >>>list2=[22,33,44,55,66,6,7] >>>list3=[1,3,5,8] >>>list1=set(list1) >>>list2=set(list2) >>>list3=set(list3) >>>list1.issubset(list2) False >>>list3.issubset(list1) True
6.是否是父集(>=)
判断一个集合是否是另一个集合的父集
>>>list1=[1,3,5,6,7,8,5,3,1] >>>list2=[22,33,44,55,66,6,7] >>>list3=[1,3,5,8] >>>list1=set(list1) >>>list2=set(list2) >>>list3=set(list3)
>>>list1.issuperset(list2) False >>>list1.issuperset(list3) True
7.isdisjoint()
判断两个集合是否相交集,没有交集,则返回True
>>>list1=[1,3,5,6,7,8,5,3,1] >>>list2=[22,33,44,55,66,6,7] >>>list3=[88,99] >>>list1=set(list1) >>>list2=set(list2) >>>list3=set(list3)
>>>list3.isdisjoint(list2) True #没有交集 >>>list1.isdisjoint(list2) False #有交集
基本操作
1.添加一项
>>>list4=set([34,46,67]) >>>list4.add("x") >>>list4 #输出 {34, 67, 'x', 46}
2.添加多项
>>>list4=set([34,46,67]) >>>list4.update(["x","y","z"]) >>>list4 #输出 {34, 67, 'x', 'y', 46, 'z'}
3.删除一项
>>>list4=set([34, 67, 'x', 'y', 46, 'z']) list4.remove("x") print(list4) #输出 {'z', 34, 67, 46, 'y'}
3.1删除一个任意元素
>>>list4=set([67, 'y', 'z', 46,34]) >>>list4.pop() >>>list4 #输出 {67, 'y', 'z', 46}
3.2如果集合存在指定元素,则删除该元素删除值,不存在,也不会返回错误
>>>list4=set([67, 'y', 'z', 46]) >>>list4.discard(67) >>>list4 #输出 {'y', 46, 'z'}
4.长度len()
>>>list4=set(['y',46,'z']) >>>x=len(list4) >>>x #输出 2
5.测试x是否是list的成员(列表,字典,字符串,集合都可以使用这种方法判断)
list4=set(['y',46,'z']) if"x" in list4: print("True") else: print("False") #输出 False
6.copy 浅copy
>>>list4=set([34,67,46]) >>>list5=list4.copy() >>>list5 #输出 {34,67,46}