①①python集合的使用

list_1 = [1,2,2,3,4,5,6,7,9,8]
list_1 = set(list_1 )               #set去重复
print(list_1,type(list_1 ))
#结果:{1, 2, 3, 4, 5, 6, 7, 8, 9} <class 'set'>

list_2 = set([0,2,22,66,33,6,8,22]) #直接set去重复
#list_2 = set(list_2 )
print(list_2,type(list_2 ))
#结果:{0, 33, 2, 66, 6, 8, 22} <class 'set'>

print(list_1.intersection(list_2 )) #intersection交集:两个列表都存在的值
print(list_1 & list_2)              #'&'求交集,不分前后;同上
#结果:{8, 2, 6}
#结果:{8, 2, 6}

print(list_1.union(list_2))         #union并集:合并两个列表并去掉重复的值
print(list_1 | list_2)              #'|'求并集,不分前后;同上
#结果:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 33, 66, 22}
#结果:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 33, 66, 22}

print(list_1.difference(list_2))    #difference差集:1列表中去掉和2列表共有的值
print(list_1 - list_2)              #'-'求差集,分先后;同上,在1中没有2的值
#结果:{1, 3, 4, 5, 7, 9}
#结果:{1, 3, 4, 5, 7, 9}
print(list_2.difference(list_1))
print(list_2 - list_1)
#结果:{0, 33, 66, 22}
#结果:{0, 33, 66, 22}

list_3 = set([1,3,6])
print(list_3.issubset(list_1))       #判断1列表是否为2列表的子集
print(list_3 <= list_1 )             #同上
#结果:True
#结果:True

print(list_1 .issuperset(list_3))    #判断1列表是否为2列表的父集
print(list_1 >= list_3 )             #同上
#结果:True
#结果:True
print(list_1.symmetric_difference(list_2)) #symmetric对称,对称差集:1,2列表合并,去掉双方都有的值
print(list_1 ^ list_2 )              #对称差集;同上
#结果:{0, 1, 66, 3, 4, 5, 7, 9, 22, 33}
#结果:{0, 1, 66, 3, 4, 5, 7, 9, 22, 33}

list_4 = [5,7,9]
print(list_3.isdisjoint(list_4))    #disjoint互斥,没有交集
#结果:True

list_5 = set([11,22,33,44])
list_5.add(55)                      #add添加一个值
list_5.update([66,77,88,99])        #update添加多个值
list_5.remove(100)                  #remove删除一个值,该值不存在时报错KeyError: 100
list_5 .pop()                       #pop()随机删除一个值
print(list_5.discard(100))          #discard删除不存在该值的不会报错,print返回None
print((11) in list_5)               #in判断该值是否是在列表中
print((11) not in list_5)           #not in判断该值是否是在列表中

print(list_5 )