集合的特性:无序、不存在重复元素
set和frozenset的区别:frozenset没有add/update/remove等属性
s = {4,5,6}
print(s)
print(type(s))
s = set((1,1,2,2,3,3)) #将元组转为set,从而实现去重
print(s)
s = set("abcabc") #字符串转为set
print(s)
s = set('cheeseshop') #使用工厂方法创建
print(s)
print(type(s))
s={'chessseshop','bookshop'}
print(s)
print(type(s))
不可变集合创建:
t = frozenset('bookshop')
print(t)
print(type(t))
增:
s = {1,2,3}
s.add(4)
print(s)
整体添加
s.add('ab')
print(s)
拆分添加
s.update('cd')
print(s)
删:
remove:当集合中存在元素时,将其删除,如果不存在,则会报错
s.remove('c')
print(s)
s.remove('c')
捕获异常处理这种情况:
try:
s.remove('c')
except KeyError as e:
print("集合中不存在该元素!")
else:
print("集合中元素删除成功!")
print("删除某元素后的集合:",s)
discard:找到并删除一个元素,不存在也不报错
s.add('e')
print(s)
s.discard('e')
s.discard('e')
pop:返回并删除随机一个元素,因为set是无序的,所以随机删除一个
s.pop()
print(s)
clear:清空set
s.clear()
print(s)
s1 = {'a','b','c'}
s1 -= {'a'}
print(s1)
遍历集合中的元素
for i in s:
print(i)
for id,value in enumerate(s):
print(id,value)
set转化为list
list(s)
set转化为tuple
tuple(s)
set不能转化为dict
dict(s)
获取set长度
s = {1,2,3,4,'d','ab'}
print(len(s))
复制set
s_copy = s.copy() #复制之后两个变量值互不影响
s.add(5)
s_copy.pop()
print(s)
print(s_copy)
集合间的运算
s & s_copy
s | s_copy
s - s_copy
s.difference(s_copy) #差集,和-等价
s.intersection(s_copy) #交集,同&
s.union(s_copy) #补集,同|
{1} == {1}
{1,2} > {1}
{2,3,4} > {5}
{2,3,4} > {2} #包含且不等于才返回True,后面的是前面的子集
{2}.issubset({1,2,3})
{2}.issuperset({1,2,3})
{1,2,3,4}.issuperset({1,2,3})
1 in {1,2,3}
22 not in {1,2,3}