集合小结一

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 #两个集合没有任何关联,就返回为真

 

posted @ 2017-12-07 11:07  老王的农场  阅读(187)  评论(0编辑  收藏  举报