python中的set特点和java中的set是一样的
文章目录
定义一个set
set={'a','b','a'}
print(set) # 打印{'b', 'a'}
set中的元素不能是可变对象
下面的代码是错的
set={'a','b',[1,2]} # 这里会报错,报错的原因说的是[1,2]不能进行hashcode,这个地方python做的不好
print(set)
添加元素
# 添加单个元素
set={'a','b','a'}
set.add('d')
print(set) # 打印{'b', 'a', 'd'}
# 批量添加元素
set={'a','b'}
set.update(['c','d'])
print(set) # 打印{'a', 'd', 'c', 'b'}
删除元素Set.remove(XXX)
set={'a','b'}
set.remove('b') # 删除b,如果b不存在,则报错
set.discard('b) # 删除b,如果b不存在,没有任何反应
print(set) # 打印{'a'}
合并(union)
set1={'a','b'}
set2={'c','d'}
set3=set1.union(set2) # 或者这样写也可以set3=set1| set2
print(set3) # 打印{'c', 'a', 'd', 'b'}
交集(intersection)
set1={'a','b'}
set2={'c','b'}
set3=set1.intersection(set2) # 或者set1 & set2
print(set3) # 打印{'b'}
差集(difference)
# 从1中,减去1和2都有的,1中剩下的给一个新的集合
set1={'a','b'}
set2={'c','b'}
set3=set1.difference(set2) # 或者set1 - set2
print(set3) # 打印{'a'}
对称差
# 从1+2中,减去1和2都有的,1+2中剩下的给一个新的集合
set1={'a','b'}
set2={'c','b'}
set3=set1.symmetric_difference(set2) # 或者set1 ^ set2
print(set3) # 打印{'a','c'}
不可变set(frozen set)
据说用作map的key的集合,感觉没啥用,不如将keys写配置文件中
set1= ['x','y']
set1= frozenset(set1)
print(set1) # frozenset({'y', 'x'})
set2 = frozenset({'a','b'})
print(set2) # frozenset({'a', 'b'})