Python之集合

定义:set集合是由一系列不重复的不可变类型变量组成的可变映射容器。
特点:

  • 相当于只有键没有值的字典,不方便对某一个元素进行读写操作
  • 集合元素不允许重复

一、集合的创建与删除

1.创建空集合

setname = set()

2.创建具有默认值的集合

方法一:setname = {element1, element2, element3, ..., element n}
方法二:setname = set(可迭代对象)  # 可迭代对象可以是列表、元组、range对象、字符串

3.删除集合

del setname

二、读取集合元素

由于集合的存储是基于哈希原理的,无法排序,也无法通过索引访问字典元素(即无法获取单个元素并修改)
1.打印全集合元素

print(setname)

2.循环遍历集合元素

for element in setname:
	print(element)

三、添加、删除集合元素

1.添加元素

setname.add(element)  
# 在集合中添加一个新的元素e;如果元素已经存在,则不添加;
# 此处element只能使用字符串、数字及布尔类型,不可使用列表、元组等可迭代对象

setname01.update(setname02)
# 将集合setname02合并到集合setname01中,去除重复元素

2.删除元素

setname.remove(element)
# 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误 

setname.remove(element)
# 从集合setname中移除一个元素element,在元素element不存在时什么都不做

setname.pop(element)
# python2中从集合setname中删除一个随机元素并返回
# python3中则从集合setname中删除第一个元素并返回
# 如果此集合为空,则引发KeyError异常

setname.clear()
# 清空集合内的所有元素

四、集合运算

s01 = {1, 2, 3, 4, 5, 6}
s02 = {4, 5, 6 ,7, 8, 9}

1.交集(取重复)

print(s01 & s02)  # {4, 5, 6} 注:顺序不一定有序

2.并集(去重复)

print(s01 | s02)  # {1, 2, 3, 4, 5, 6, 7, 8, 9}

3.补集

print(s01 ^ s02)  # {1, 2, 3, 7, 8, 9}
print(s01 - s02)  # {1, 2, 3}
print(s02 - s01)  # {7, 8, 9}

4.子集和超集

s03 = {1, 2, 3}
s04 = {1, 2, 3}
print(s04 <= s03)  # True
# s04是s03的子集,s03是s04的超集

5.关于集合运算的方法

S.difference(s2) 		 # 用S - s2 运算,返回存在于在S中,但不在s2中的所有元素的集合 
S.difference_update(s2)  # 等同于 S = S - s2 
S.intersection(s2)   	 # 等同于 S & s2 
S.intersection_update(s2)#等同于S = S & s2 
S.isdisjoint(s2) 		 # 如果S与s2交集为空返回True,非空则返回False 
S.issubset(s2) 			 # 如果S与s2交集为非空返回True,空则返回False 
S.issuperset(...) 		 # 如果S为s2的子集返回True,否则返回False 
S.symmetric_difference(s2)# 返回对称补集,等同于 S ^ s2 
S.symmetric_difference_update(s2) # 用 S 与 s2 的对称补集更新 S 
S.union(s2)  			 # 生成 S 与 s2的全集 

五、集合的其他方法

setname.copy()  # 将集合进行一次浅拷贝

六、固定集合(frozenset)

固定集合是不可变集合,它没有预留空间,不能增,不能删

s = frozenset(可迭代对象)  # 可迭代对象可以是列表、元组、range对象、字符串
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值