python3.x Day3 集合
python中的集合
集合定义:一个无序的去重的数据集,主要特性就是去重和关系测试,关系测试不改变集合中的数据值
定义集合:set(list) 可以将list转化为集合set
示例:
定义一个集合:list_1
list_1=[1,3,23,53,3]
定义另一个集合:list_2
list_2=[2,3,53,2]
转化为集合:
可以用list_1自身转化,也可以赋值给其他变量,这里就用自身
list_1 = set(list_1)
list_2 = set(list_2)
输出一下转化后的值,可以看到已经去重了(去重特性):
print(list_1,type(list_1)) print(list_2,type(list_2)) #结果: >>> print(list_1,type(list_1)) {1, 3, 53, 23} <class 'set'> >>> print(list_2,type(list_2)) {2, 3, 53} <class 'set'>
接下来是关系测试:
交集(list_1、list_2都有的数据):可以用set的intersection方法(以下代码)或者运算符 print(list_1 & list_2)
#交集 print(list_1.intersection(list_2)) >>>{3, 53}
判断 没有交集(没有:True、有:False):
#判断 没有交集 print("判断 没有交集,没有返回True") print(list_1.isdisjoint(list_2)) #有交集,返回false list_4=set([101,102]) #定义list_4与list_1没有交集 print("list_4:",list_4) print(list_1.isdisjoint(list_4)) >>>判断 没有交集,没有返回True >>>False >>>list_4: {101, 102} >>>True
并集(list_1、list_2中的数据整合在一起):可以用set的union方法,也可以使用运算符print( list_1 | list_2 )
#并集 print(list_1.union(list_2)) >>>{1, 2, 3, 53, 23}
差集(取数据为:首先在list_1中,list_2中的数据,如果list_1中有,结果集就去掉):可以用set的difference方法,也可以使用运算符print( list_1 - list_2 ) 表示:list_1中包含,list_2不包含
#差集 print(list_1.difference(list_2)) >>>{1, 23} #反过来也是一样的原理,结果以list_2为准 print(list_2.difference(list_1)) >>>{2}
对称差集(取得两个集合互相都没有的数据):可以使用set对象的symmetric_difference方法,也可以使用运算符 print( list_1 ^ list_2)
#对称差集:取得两个集合中,互相都没有的数据 print("对称差集") #list_1、list_2 print(list_1,list_2) #取得对称差集 print(list_1.symmetric_difference(list_2)) >>>{1, 3, 53, 23} {2, 3, 53} >>>{1, 2, 23}
子集/父集:
#子集/父集 返回值为True、False print("子集/父集") print(list_1.issubset(list_2)) #list_1是不是list_2的子集 print(list_1.issuperset(list_2)) #list_1是不是list_2的父集 >>>False >>>False list_3=set([3,53]) print(list_3.issubset(list_1))#list_3是不是list_1的子集 print(list_1.issuperset(list_3))#list_1是不是list_3的父集 >>>True >>>True
集合的增伤改查:
#集合的增删改查 print("增加,add方法增加一个,update方法增加多个") list_1.add(55555) list_1.update([333,444,666]) print("查询,len()方法查询有多少成员,x in set判断x是否为成员") print(list_1) print(len(list_1)) print(666 in list_1,999 in list_1) print("删除,set的pop方法随机删除一个,返回被删除的值。" "remove删除指定一个成员,有就删除,没有就异常," "discard方法删除指定值,不返回,有就删除,没有就啥都不做") print("it is {list}".format(list=list_1)) print(list_1.pop()) print("pop():",list_1) #remove list_1.remove(333) #list_1.remove("ddd") ddd不存在,此处会异常 print("remove()",list_1) #discard list_1.discard(444) list_1.discard("ddd") print(list_1)