集合及其运算

集合是无序的,有两个作用:
去重:把一个列表变成集合,就自动去重了
关系测试:统计两组数据的交集、差集和并集等关系


list1=[1,2,3,4,2,3]
s=set(list1 ) #保留list1列表,s才是集合
print(s,type(s ) )
#{1, 2, 3, 4} <class 'set'>
list2=set([2,4,8,9,10]) #list2直接变成集合
print('集合一 :',s,'集合二 :',list2 )
print('交集',s.intersection(list2 ) )
#集合一 : {1, 2, 3, 4} 集合二 : {2, 4, 8, 9, 10}
#交集 {2, 4}
#求交集

print('并集',s.union(list2 ) )
#并集 {1, 2, 3, 4, 8, 9, 10}
#求并集

print('差集',s.difference(list2 ) )
#差集 {1, 3}
#difference求的是S里面去掉list2里面跟S重复的内容,
# 即:差集 = S - S跟list2的交集

list3=set ([2,4])
print(list3 .issubset(s) )
#True issubset用于判断集合list3是不是集合S的子集,是返回True,
# 不是则返回False
print(list2.issuperset(list3 ) )
#True issuperset用于判断list2是不是list3的父集

print(s.symmetric_difference(list2 ) )
#{1, 3, 8, 9, 10}
#对称差集 如果集合S并集合list2是全集,则对称差集=S和list2的交
# 集的补集,即:把两个集合都没有的取出来并成一个新的集合

print(s.isdisjoint(list2 ) )
#False
list4=set ([5,6,7,8])
print(s.isdisjoint(list4 ) )
#True
#isdisjoint 用于判断两个集合是不是没有交集

print(s & list2 )
#{2, 4} 用&符号求交集 #intersection
print(s|list2 )
#{1, 2, 3, 4, 8, 9, 10} 用|符号求并集 #union
print(s-list2 )
#{1, 3} 差集用符号 - ,项在S里,不在list2里 #difference
print(s^list2 )
#{1, 3, 8, 9, 10} 对称差集用符号^ #symmetric_difference

list2 .add('hello')
print('集合增加项',list2 )
list2 .update([999,888])
print('集合增加多项',list2 )
list5=[1,2,3]
list5 .append("hello")
list5 .insert(1,99) #insert(index,values)
print('列表增加项',list5 )
#集合增加项 {2, 'hello', 4, 8, 9, 10} #add和update
#集合增加多项 {2, 4, 999, 8, 9, 10, 'hello', 888}
#列表增加项 [1, 99, 2, 3, 'hello'] #append和insert

list2 .remove('hello')
print(list2 )
#{2, 4, 999, 8, 9, 10, 888}
#remove 用于移除集合中的元素

print(2 in list2 )
print(2 not in list2 )
#True 判断元素在集合里面,用 x in list
#False 判断元素不在集合里面,用 x not in list

list2.discard(888)
print(list2 )
list2 .remove(999)
print(list2 )
print(list2.discard(10))
#{2, 4, 999, 8, 9, 10}
#{2, 4, 8, 9, 10}
#None
#remove如果册除的项不存在,则会报错
#discard如果册除的项不存在不会报错,如果删除存在的项,不会有其他行为
# 所以不能被打印
posted @ 2020-05-06 02:09  逝水无痕L  阅读(286)  评论(0)    收藏  举报