**
SET
** 介绍
集合是无序和无索引且不重复的元素集合。在 Python 中,集合用花括号编写。
set 集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算等。
集合中只能存储不可变数据类型:包括整形、浮点型、字符串、元组,否则解释器会抛出TypeError;
创建集合
Python 提供了2种创建 set 集合的方法,分别是使用{}创建和使用set()函数将列表、元组等类型数据转换
为集合。
- 使用 {} 创建
创建 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=' ')
集合添加元素
set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现
a = {1,2,3}
a.add((1,2))
print(a)
a.add([1,2])
print(a)
集合中删除元素
a = {1,2,3}
a.pop()
a = {1,2,3}
a.remove(1)
print(a)
a.remove(1)
print(a)
a = {1,2,3}
a.remove(1)
print(a)
a.discard(1)
print(a)
删除set集合
和其他序列类型一样,手动函数集合类型,也可以使用 del() 语句
a = {1,'c',1,(1,2,3),'c'}
print(a)
del(a)
print(a)
合并集合
使用 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)
print(set1 | set2)
print(set1 - set2)
print(set2 - set1)
print(set1 ^ set2)
集合方法函数
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
|