#Python集合
#集合set是一个无序的不重复的元素序列(这点和java相同)
#集合set的创建方式: { } 或者 set(), 创建一个空集合必须用set(), 而不能用{}, 空{}是用来创建空集合的
#定义集合时可以有重复元素, 但是会被去重
var_set1 = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(var_set1) #{'pear', 'banana', 'apple', 'orange'}
var_set2 = set('abcdeabcdef')
var_set3 = set(('a', 'b', 'c', 'm', 'n'))
print(var_set2) #{'d', 'b', 'c', 'e', 'f', 'a'}
print(var_set3) #{'a', 'b', 'm', 'n', 'c'}
#集合间的运算
print(var_set2 - var_set3) #{'d', 'f', 'e'} set2 包含 set3中不包含的元素
print(var_set2 | var_set3) #{'c', 'm', 'd', 'e', 'b', 'n', 'f', 'a'} set2和set3的并集
print(var_set2 & var_set3) #{'b', 'a', 'c'} set2和set3的交集
print(var_set2 ^ var_set3) #{'m', 'e', 'n', 'f', 'd'} set2和set3互不包含的元素
#集合元素的添加和移除
var_set1.add('pine')
var_set1.update('123') #参数可以是序列,字典
print(var_set1) #{'pear', 'apple', '2', 'pine', 'orange', 'banana', '1', '3'}
var_set1.remove('1') #如果要删除的元素不存在, 会报错
var_set1.discard('2'); var_set1.discard('3')
var_set1.discard('notExisted') #如果要删除的元素不存在, 不会报错
var_pop = var_set1.pop() #随机删除一个元素, 并返回该元素
print(var_set1)
#集合相关的函数和方法
var_set1.clear() #清空集合
print(len(var_set1)) #0 集合的长度
print(var_set2.difference(var_set3)) #{'e', 'f', 'd'} set2包含, set3不包含的元素
var_set2.difference_update(var_set3) #将所有set3中存在的元素从set2中去除
print(var_set2) #{'d', 'e', 'f'}
print({'1', '2', '3'}.intersection({'2', '3'}, {'2'})) #{'2'} 返回交集
var_intersect = {'1', '2', '3'}
var_intersect.intersection_update({'2', '3'}, {'2'})
print(var_intersect) #{'2'} 取交集并更新
print({2, 3}.isdisjoint({4, 5})) #True 判断是否有交集, 没有返回True
print({2, 3, 4}.issuperset({4})) #True 判断参数是否是子集
print({5}.issubset({4, 6})) #False 判断是否是参数的子集
var_d1 = {'a', 'b'}; var_d2 = {'c', 'd', 'a'}
print(var_d1.symmetric_difference(var_d2)) #{'d', 'c', 'b'} 返回两个集合中不重复的元素的集合
var_d1.symmetric_difference_update(var_d2) #更新为两个集合不重复元素的集合
print(var_d1) #{'d', 'c', 'b'}
print({1}.union({2})) #{1, 2} 返回两个元素的并集, 不做更新
网友评论