python_集合

**

SET

**
介绍

集合是无序和无索引且不重复的元素集合。在 Python 中,集合用花括号编写。

set 集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算等。

集合中只能存储不可变数据类型:包括整形、浮点型、字符串、元组,否则解释器会抛出TypeError;

创建集合

Python 提供了2种创建 set 集合的方法,分别是使用{}创建和使用set()函数将列表、元组等类型数据转换
为集合。
  1. 使用 {} 创建
	创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,从而实现创建集合的目的
	
a = {1,'c',1,(1,2,3),'c'}
print(a)
print(type(a))

2)set()函数创建集合

	set() 函数为Python内置函数,能将字符串、列表、元组、range 对象等可迭代对象转换成集合
set1 = set("c.biancheng.net")
set2 = set([1,2,3,4,5])
set3 = set((1,2,3,4,5))
print("set1:",set1)
print("set2:",set2)
print("set3:",set3)

如果要创建空集合,只能使用set()函数实现。因为直接使用一对{},Python解释器会将其视为一个空字典

访问集合元素

	集合中的元素是无序的,因此无法向列表那样使用下标访问元素。
	Python 中,访问集合元素最常用的方法是使用循环结构,将集合中的数据逐一读取出来。

a = {1,'c',1,(1,2,3),'c'}
for ele in a:
    print(ele,end=' ') # 1 c (1, 2, 3)

集合添加元素

	set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现
a = {1,2,3}
a.add((1,2))
print(a)  # {(1, 2), 1, 2, 3}
a.add([1,2])
print(a) #TypeError: unhashable type: 'list'

集合中删除元素


	
a = {1,2,3}
a.pop()   #pop()从集合中删除一个元素。


a = {1,2,3}
a.remove(1) #使用 remove() 方法删除指定元素
print(a)
a.remove(1)
print(a) # 如果被删除元素本就不包含在集合中,则此方法会抛出 KeyError 错误

 
a = {1,2,3}
a.remove(1)
print(a) #{2, 3}
a.discard(1)
print(a)  #{2, 3} #discard() 方法,当删除集合中元素失败时,此方法不会抛出任何错误。

删除set集合

	和其他序列类型一样,手动函数集合类型,也可以使用 del() 语句

a = {1,'c',1,(1,2,3),'c'}
print(a)
del(a)
print(a) #NameError: name 'a' is not defined

合并集合

 使用 union() 方法返回包含两个集合中所有项目的新集合

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set3 = set1.union(set2)
print(set3)

 使用 update() 方法将一个集合中的所有项目插入另一个集合中
set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set1.update(set2)
print(set1)

交集、并集、差集运算

集合示意图
图 1 中,有 2 个集合,分别为 set1={1,2,3} 和 set2={3,4,5},它们既有相同的元素,也有不同的元素。以这两个集合为例,分别做不同运算的结果如表 1 所示。

set1 = {1,2,3}
set2 = {3,4,5}
	# 交集 &
print(set1 & set2)   # {3};取两集合公共元素(都存在的元素)
	# 并集 |
print(set1 | set2)  #{1,2,3,4,5}; 取两个集合全部元素
	# 差集 -
print(set1 - set2) #{1,2}; 取一个集合中另一个集合没有的元素
print(set2 - set1) #{4,5}; 取一个集合中另一个集合没有的元素
	# 对称差集
print(set1 ^ set2)#{1,2,4,5}; 取集合a和b中不属于a和b公共的元素

集合方法函数

	set 类型提供的方法。首先,通过 dir(set) 命令可以查看它有哪些方法;
	
set1.add(): 向集合中添加数字、字符串、元组或者布尔类型数据
set1.clear():清空 set1 集合中所有元素
set2 = set1.copy():拷贝 set1 集合给 set2
set3 = set1.difference(set2):将 set1 中有而 set2 没有的元素给 set3
set1.difference_update(set2):	从 set1 中删除与 set2 相同的元素
set1.discard(elem):删除 set1 中的 elem 元素
set3 = set1.intersection(set2):取 set1 和 set2 的交集给 set3
set1.intersection_update(set2):取 set1和 set2 的交集,并更新给 set1
set1.isdisjoint(set2):判断 set1 和 set2 是否没有交集,有交集返回 False;没有交集返回 True
set1.issubset(set2):判断 set1 是否是 set2 的子集
set1.issuperset(set2):判断 set2 是否是 set1 的子集
a = set1.pop():取 set1 中一个元素,并赋值给 a
set1.remove(elem):移除 set1 中的 elem 元素
set3 = set1.symmetric_difference(set2):取 set1 和 set2 中互不相同的元素,给 set3
set1.symmetric_difference_update(set2):取 set1 和 set2 中互不相同的元素,并更新给 set1
set3 = set1.union(set2):	取 set1 和 set2 的并集,赋给 set3



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值