Python 语法之集合
集合是无序元素的集合,集合中的元素不可重复,并且创建完成后,其中的元素不可更改。但是整个集合是可以更改的,我们可以向其增加元素,也可以从中删除元素。也就是说,我们无法修改集合中的元素,但是我们可以对整个集合进行添加或者是删除等更改的操作。
集合的创建非常简单,只需要将以逗号分隔的元素放在花括号 {}
中,{元素1,元素2,元素3,...,元素n}
。
1.集合的创建
不知道大家是否有个武侠梦呢,我从小就喜欢看武侠小说,以及根据小说改编的各种电视剧,最爱的就是气度翩翩的赵敏,黎姿版的赵敏真的是一眸一笑深入人心…
我们来创建一个名为 novels 的集合,集合中的元素为武侠小说的名称,让我们在集合的世界里畅游武侠江湖!
集合中的元素不可重复,如果有重复元素,重复的元素将被忽略。
集合中有两个元素 '飞狐外传'
,但是打印的集合中,只显示一个飞狐外传,集合中的第二个元素 '飞狐外传'
被认定为是重复元素,被忽略,没有显示。
2.集合的访问
在介绍集合时,提到了集合中的元素是无序的!(列表、元组都是有序的)
元素的顺序主要应用在索引中,集合中的元素是无序的,也就无法应用索引进行访问了。
那么访问集合中的元素可以通过哪些方式呢?
我们可以通过 for
循环来遍历集合的元素,另外,还可以使用 in
关键字来判断集合中是否存在某个元素。
我们首先来看通过 for
循环遍历集合的元素。
2.1 for 循环
2.2 in
使用 in
关键字来判断集合中是否存在某个元素,如果元素在集合内,返回 True
,如果元素不在集合内,返回 False
,运行下方语句:
3.集合的修改
可以对整个集合进行一些修改。
3.1 add() and update()
add()
和 update()
都可用于向集合添加元素。
语法规则为:集合名.add(元素名)
、集合名.update({元素1,元素2,...,元素n})
我们看到 add()
和 update()
的一个区别是 add()
添加的是一个元素;update()
添加的是集合或者是列表,添加的是多个元素。
执行 add()
和 update()
的语句后,在集合结尾处添加了相应的元素。
3.2 discard() and remove()
除了可以对整个集合添加元素,我们还可以删除集合中的元素。
discard()
和 remove()
用于从集合中删除元素。
语法规则为:集合名.discard()
、集合名.remove()
。这两个函数的区别在于,从集合中删除一个不存在的元素时,discard()
不会执行任何操作,而 remove()
会抛出一个异常。
3.2.1 删除存在的元素
首先看一下删除存在的元素,discard()
和 remove()
的使用是一样的,结果也是一样的。
3.2.2 删除不存在的元素
对于删除不存在的元素,discard()
不会执行任何操作,而 remove()
会抛出一个异常。
大家在删除集合中的元素时,要灵活掌握这些方法!
4.集合的操作
在数学中,也学习到了集合的相关概念,在数学中,我们可以对集合进行一系列的操作,比如并集、交集和差集。Python 中的集合,我们也可以做相应的操作,实现 Python 集合的并集、交集和差集。
我们先一起来看下 Python 中集合的并集:
4.1 并集
在数学中,关于并集的定义是:给定两个集合 A,B,把他们所有的元素合并在一起组成的集合,叫做集合 A 与集合 B 的并集,记作 A∪B,读作 A 并 B。
Python 中的并集也是一个含义,将集合 A 和集合 B 的所有元素合并在一起,就组成了集合 A 和集合 B 的并集。Python 中,实现集合并集可以使用 union()
和 |
操作符。
4.1.1 union()
我们先来看下使用 union()
实现集合的并集,语法规则为:集合1.union(集合2)
,运行下方语句:
4.1.2 |
也可以使用 |
对两个集合进行并集的运算,语法规则为 集合1|集合2
,运行下方语句:
4.2 交集
继续一起来看交集:
A,B 是两个集合,由所有属于集合 A 且属于集合 B 的元素所组成的集合,叫做集合 A 与集合 B 的交集(intersection),记作 A∩B。我们使用 intersection()
和 &
实现不同集合间的交集。
4.2.1 intersection()
可以实现集合 A 和集合 B 的交集运算,语法规则是 集合1.intersection(集合2)
,运行下方语句 :
4.2.2 &
&
也可以实现集合 A 和集合 B 的交集运算,语法规则是 集合1 & 集合2
,运行下方语句:
4.3 差集
集合 A 和集合 B 中,只属于其中一个集合,不属于另一个集合的元素。比如属于集合 A 不属于集合 B 的元素集合,或者是属于集合 B 不属于集合 A 的元素集合。
4.3.1 difference()
可以使用 difference()
来实现差集的运算,语法规则为集合1.difference(集合2)
:即实现属于集合 1 不属于集合 2 的差集,我们一起运行下方语句:
当集合 novels_1 在 difference()
之前时,打印的是属于集合 novels_1 不属于集合 novels_2 的元素集合,集合 novels_2 在 difference()
之前时,打印的是属于集合 novels_2 不属于集合 novels_1 的元素集合。
4.3.2 -
我们可以使用-
来实现差集的运算,语法规则为 集合1-集合2
:即实现属于集合 1 不属于集合 2 的差集,我们一起运行下方语句:
4.4 对称差集
对称差集就是属于集合 A,不属于集合 B 的以及属于集合 B 不属于集合 A 的元素集合,就是集合 A 与集合 B 的并集减去集合 A 与集合 B 的交集。
4.4.1 symmetric_difference()
我们可以使用 symmetric_difference()
来实现对称差集的运算,语法规则是:集合1.symmetric_difference(集合2)
,一起来运行下方语句:
4.4.2 ^
我们可以使用 ^
来实现对称差集的运算,语法规则是:集合1^集合2
,一起来运行下方语句:
5.试一试
求集合 novels_1 = {'飞狐外传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录'}
和novels_2 = {'白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
的并集,交集,差集和对称差集。
版权声明: 本文为 InfoQ 作者【向阳逐梦】的原创文章。
原文链接:【http://xie.infoq.cn/article/48ef2924c2ee80970e1b98ef4】。文章转载请联系作者。
评论