概述
今天要讲解的内容是另外一种数据结构类型-集合,集合这个概念对于大家来说,应该不陌生;
在数学当中,我们已经学过这个概念,也大概应该知道集合的作用;
集合是一个存放数据的容器,并且集合当中也是可以存放任何数据类型的数据,
集合的特点是无序性和唯一性,集合当中的元素是没有顺序的,不能按照索引位置进行元素访问,唯一性是指集合当中的元素是不重复的。这一点也是经常被用作数据去重。
集合的概念
集合(Set)是一个无序不重复的元素序列。
集合的创建
方式一:用大括号{}直接赋值创建
s1={1,2,3,4,5,6,7,8,6,"1",(1,2,3,4)}
print(s1)
#输出结果
'''
{1, 2, 3, 4, 5, 6, 7, 8, (1, 2, 3, 4), '1'}
注意看输出结果,在定义时,6重复了2次,但是生成的集合中,只保留了一份。
'''
用大括号创建集合时,不能创建空集合。
s={},这个语句创建的s不是空集合,是个空字典类型。
方式二:用Set()函数进行创建
s2=set([1,2,3,4,5,6,7,7,7,8,9])
print(s2)
#输出结果
'''
{1, 2, 3, 4, 5, 6, 7, 8, (1, 2, 3, 4), '1'}
'''
可以通过set函数创建空集合。
在创建集合时,集合当中的元素不能是可变类型,比如列表、字典等数据类型,否则会抛出类型错误(TypeError)。集合中的元素必须是可哈希的,是不可变类型。
集合支持的操作
添加元素
add()方法
通过此方法可以往集合当中添加元素。语法格式如下:
s.add(x).
s=set([1,2,3,4,5,6])
print("初始值:",s)
s.add("1")
print("增加元素后:",s)
#结果输出
'''
初始值: {1, 2, 3, 4, 5, 6}
增加元素后: {1, 2, 3, 4, 5, 6, '1'}
'''
update()方法
此方法也可以往集合当中添加元素,参数可以是一个,也可以是多个,并且也可以是复合数据类型。
案例如下:
s=set([1,2,3,4,5,6])
print("初始值:",s)
s.update([1,2,3,10,11])
s.update((12,13,14,15),(20,21,22,23,24))
s.update({"name":1,"age":21})
print("通过update更新后:",s)
#结果输出
'''
初始值: {1, 2, 3, 4, 5, 6}
通过update更新后: {1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 'name', 20, 21, 22, 23, 24, 'age'}
'''
分析执行结果得出,update会把列表、元组中元素拆分后添加到集合中,字典类型是把key的值添加到集合当中。
需要注意的一点是作为参数的列表和元组中不能包括不可变类型的数据。
删除元素
remove()方法
此方法实现从集合当中移除某个元素,如果元素不存在,会抛出异常。
s=set([1,2,3,4,5,6])
print("初始值:",s)
s.remove(1)
# s.remove(7)
print("移除某个元素后:",s)
#结果输出
'''
初始值: {1, 2, 3, 4, 5, 6}
移除某个元素后: {2, 3, 4, 5, 6}
'''
discard()方法
此方法也可以移除集合当中的某个元素,如果元素不存在,不会抛出错误。
s=set([1,2,3,4,5,6])
print("初始值:",s)
# s.remove(1)
s.discard(7)
print("移除某个元素后:",s)
#结果输出
'''
初始值: {1, 2, 3, 4, 5, 6}
移除某个元素后: {1, 2, 3, 4, 5, 6}
'''
pop()方法
此方法会随机删除集合当中的一个元素,此方法会返回删除的元素。
s=set([11,12,13,21,1,2,3,4,5,6])
print("初始值:",s)
o=s.pop()
print("移除的元素:",o)
print("移除某个元素后:",s)
#结果输出
'''
初始值: {1, 2, 3, 4, 5, 6, 11, 12, 13, 21}
移除的元素:1
移除某个元素后: {2, 3, 4, 5, 6, 11, 12, 13, 21}
'''
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
集合的运算
交集
两个集合的交集是指由两个集合中都存在的元素组成的集合。
在python中,有两个方法可以求出两个集合的交集.
intersection() 和intersection_update()方法。
intersection方法会返回一个新的集合作为交集。
intersection_update方法会更新调用集合对象,无返回值。
s=set([11,12,13,21,1,2,3,4,5,6])
s2={1,2,3,4,5,6,7,8}
s4=s.intersection(s2)
print("交集:",s4)
s3=s.intersection_update(s2)
print("s3:",s3)
print("调用方法后:",s)
#结果输出
'''
交集: {1, 2, 3, 4, 5, 6}
s3 None
调用方法后: {1, 2, 3, 4, 5, 6}
'''
并集
union()方法求出两个集合的并集,即包括两个集合中的所有元素。
s=set([11,12,13,21,1,2,3,4,5,6])
s2={1,2,3,4,5,6,7,8}
s3=s.union(s2)
print("并集s3:",s3)
#结果输出
'''
并集s3: {1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 21}
'''
差集
difference()方法
此方法返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合中(参数集合)。
s=set([11,12,13,21,1,2,3,4,5,6])
s2={1,2,3,4,5,6,7,8}
s3=s.difference(s2)
print("差集s3:",s3)
s4=s2.difference(s)
print("差集s4:",s4)
#结果输出
'''
差集s3: {21, 11, 12, 13}
差集s4: {8, 7}
'''
在使用此函数时,要注意分清调用集合和参数集合的顺序。即求哪个集合相对于哪个集合的差集。
对称差集
symmetric_difference()和symmetric_difference_update()两个方法可以实现求出两个集合的对称差集,即两个集合中不重复的元素集合。
二者的区别是symmetric_difference返回新的集合。
symmetric_difference_update无返回值,会更新调用的集合,移除两个集合的重复元素,把另外一个集合(参数集合)中不重复的元素添加进去。
s=set([11,12,13,21,1,2,3,4,5,6])
s2={1,2,3,4,5,6,7,8}
s3=s.symmetric_difference(s2)
print("对称差集:",s3)
s4=s.symmetric_difference_update(s2)
print("s4:",s4)
print("最新的s集合为:",s)
#结果输出
'''
对称差集: {7, 8, 11, 12, 13, 21}
s4: None
最新的s集合为: {7, 8, 11, 12, 13, 21}
'''
子集
issubset() 和 issuperset() 两个方法可以判断两个集合是否是子集的关系,返回值都是布尔类型。
s1.issubset(s2) # 判断s1是否是s2的子集。
s1.superset(s2) # 判断s2是否是s1的子集。
s=set([1,2,3,4,5,6,7,8,9])
s2={1,2,3,4,5,6,7,8}
print(s.issubset(s2)) # 输出:False
print(s.issuperset(s2)) #输出:True
集合是一个无序不重复的序列,在实际应用中,经常被用来去重操作,以及进行集合运算,非常方便,掌握好后可以灵活使用。
以上就是python当中集合的相关知识,希望对您有所帮助。
-----------------------------------------------------------------
您的关注和支持是作者持续创作下去的动力源泉。
最后
以上就是勤恳夕阳为你收集整理的Python基础专栏11-python基础篇-复合数据类型-集合集合的概念集合的创建集合支持的操作的全部内容,希望文章能够帮你解决Python基础专栏11-python基础篇-复合数据类型-集合集合的概念集合的创建集合支持的操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复