1,普通方法取两个列表的交集eg:
linux = ['zhou','wang','li','dai'] java = ['dai','zhou','mack','rachel'] linux_and_java = [] for i in java: if i in linux: linux_and_java.append(i) print(linux_and_java)
2,集合set
a,关系测试
b,天然去重
c,集合是无序的
表现形式:{} 有value是字典,没有value是集合
交集:两个都有
差集:在列表a里有,在b里没有
并集:把两个列表里,的元素,合并在一起,去重
linux = {'zhou','wang','li','dai'} java = {'dai','zhou','mack','rachel'} print(type(linux))
求交集intersection,符号&
print(linux.intersection(java))
#求交集
print(linux & java) #求交集
求差集difference ,符号-
print(linux.difference(java)) #linux里有,java里面没有的
print(java.difference(linux)) #java里有,linux里没有
print(linux - java)
求联合并集union ,符号 |
print(linux.union(java)) print(linux | java)
update ,把b合并到a中
linux.update(java) #把java合并到linux中 print(linux) print(java)
反向差集,对称差集,符号 ^
表现形式 :symmetric_difference
意思:a和b内,只要互相不在,的都列出
print(linux.symmetric_difference(java))
print(linux ^ java)
增加:不能增加已有的,天然去重功能,决定了只能增加不同的
linux.add('ALEX')
linux.difference_update(java)#求差集,并赋值给a集合。会修改数据
删除
linux.discard('alex') #删指定的某个,如果删除的元素不存在,不报错
linux.pop() #随机删一个
linux.remove('alex') #删除,但是如果元素不存在,会报错
linux.issubset(java) #子集
print(linux.issuperset(java)) #父集
a.issuperse<b> #b是a的父集
isdisjoint #两个集合没有任何关联,就返回为真