站长在线零基础Python完全自学教程18:Python中的集合完全解读

2024-05-11 01:08

本文主要是介绍站长在线零基础Python完全自学教程18:Python中的集合完全解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第18课《 Python中的集合完全解读》。本节课是一个大课,我分了这些知识点进行详细讲解:集合的概念和创建方法详解、添加和删除集合元素详解、集合的交集、并集、差集和对称差集运算方法详解。

目录

18.1、Python中集合的概念和创建方法详解

18.1.1、在Python中集合的概念

18.1.2、在Python中创建集合

18.1.2.1、在Python中直接使用“{}”创建集合。

18.1.2.2、在Python中使用set()函数创建集合

18.2、在Python中添加和删除集合元素详解

18.2.1、在Python中添加集合元素

18.2.1.1、在Python中向集合里面添加元素可以使用add()方法实现。

18.2.1.1.1、使用add()方法实现添加单个集合元素。

18.2.1.1.2、使用add()方法实现添加多个集合元素。

18.2.1.2、使用update()方法添加集合元素

18.2.2、在Python中删除集合元素

18.2.2.1、使用del命令删除整个集合

18.2.2.2、使用clear()方法清空集合元素

18.2.2.3、使用pop()方法删除最后一个元素

18.2.2.4、使用remove()方法删除指定元素

18.2.2.5、使用remove()方法删除多个元素

18.3、Python中集合的交集、并集、差集和对称差集运算方法详解

18.3.1、集合运算的相关含义:

18.3.1.1、集合的交集的含义:

18.3.1.2、集合的并集的含义:

18.3.1.3、集合的差集的含义:

18.3.1.4、集合的对称差集的含义:

18.3.2、集合的运算方法

18.3.2.1、集合的交集运算方法

18.3.2.1.1、使用“&”运算符进行交集运算

18.3.2.1.2、使用intersection()方法进行交集运算

18.3.2.2、集合的并集运算方法

18.3.2.2.1、使用“|”运算符进行并集运算

18.3.2.2.2、使用union()方法进行并集运算

18.3.2.3、集合的差集运算方法

18.3.2.3.1、使用“-”运算符进行差集运算

18.3.2.3.2、使用difference()方法进行差集运算

18.3.2.4、集合的对称差集运算方法

18.3.2.4.1、使用“^”运算符进行对称差集运算

18.3.2.4.2、使用symmetric_difference()方法进行对称差集运算


18.1、Python中集合的概念和创建方法详解

在前面的教程中我们学习了列表、元组、字典,本文开始讲解序列里面的另一个常用结构--集合。

18.1.1、在Python中集合的概念

Python中的集合(set)与数学中的集合概念类似,也是用于保存不重复的元素。

它有可变集合(set)和不可变集合(frozenset)两种。其中,本节所要介绍的set集合是无序可变序列。

在形式上,集合的所有元素都放在一对大括号“{}”中,两个相邻元素间使用逗号“,”分隔。集合最好的应用就是去重,因为集合中的每个元素都是唯一的。

这个和字典类似,字典也是放在“{}”中,不同的是字典在“{}”中是“键值对”,而集合中每一个元素都是独立存在的。

站长在线温馨提示:集合在数学中的定义是:由一个或多个确定的元素所构成的整体。

集合最常用的操作就是创建集合,以及集合的添加、删除、交集、并集和差集等运算,本节课开始讲解集合的创建。

18.1.2、在Python中创建集合

在Python中提供了两种创建集合的方法,一种是直接使用“{}”创建;另一种是通过set()函数将列表、元组等可迭代对象转换为集合。

注意:创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典。如下代码所示:

a = {}
print(a)
print(type(a))

运行结果为:

{}
<class 'dict'>
>>> 

18.1.2.1、在Python中直接使用“{}”创建集合。

在Python中,创建set集合也可以像列表、元组和字典一样,直接将集合赋值给变量,从而实现创建集合,即直接使用大括号“{}”创建。语法格式如下:

集合名 = {元素1,元素2,...元素n}

站长在线提示你,在集合中,元素的数量没有限制,数据的类型只要是Python中支持的数据类型都可以。

在上面我们谈到了集合的每一个元素都是唯一的,如果输入了重复的元素,Python会自动保留一个,如下:

例如,下面每一行的代码都会创建一个集合:

name = {'美琳','梦洁','雪丽','美莲'}
age = {18,19,19,18}
hunhe = {66,"Python",('人生苦短','我用Python')}
print(name)
print(age)
print(hunhe)

运行代码,结果为:

{'雪丽', '美莲', '美琳', '梦洁'}
{18, 19}
{('人生苦短', '我用Python'), 66, 'Python'}
>>> 

因为在Python中的set集合是无序的,因此每次输出的结果,可能可能不同,如我第二次运行代码的结果是:

{'美琳', '梦洁', '美莲', '雪丽'}
{18, 19}
{'Python', ('人生苦短', '我用Python'), 66}
>>> 

18.1.2.2、在Python中使用set()函数创建集合

在Python中,可以使用set()函数将列表、元组等其他可迭代对象转换为集合。set()函数的语法格式如下:

setname = set(iteration)

参数说明如下:

setname:表示集合名称;

iteration:表示要转换为集合的可迭代对象,可以是列表、元组、range对象等。另外,也可以是字符串,如果是字符串,返回的集合将是包含全部不重复字符的集合。

例如,下面的每行代码都可以创建一个集合。

set1 = set('我是中国人,我爱自己的祖国')
set2 = set([3.1415926535,99.99])
set3 = set(('Python的设计哲学','优雅','明确','简单'))
print(set1)
print(set2)
print(set3)

运行结果如下:

{'己', '的', '中', '是', '自', ',', '祖', '我', '人', '爱', '国'}
{99.99, 3.1415926535}
{'简单', '明确', 'Python的设计哲学', '优雅'}
>>> 

站长在线提醒你:在Python中创建集合推荐使用set()函数添加哦!

18.2、在Python中添加和删除集合元素详解

集合是可变序列,所以在创建集合后,还可以对其添加或者删除元素。下面站长在线就对如何添加和删除集合元素进行详细解读。

18.2.1、在Python中添加集合元素

18.2.1.1、在Python中向集合里面添加元素可以使用add()方法实现。

其中添加元素又分为添加单个元素和多个元素之分。

18.2.1.1.1、使用add()方法实现添加单个集合元素。

语法如下:

setname.add(element)

其中,setname表示要添加元素的集合;element表示要添加的元素内容。这里只能使用字符串、数字及布尔类型的True或者False等,不能使用列表、元组等可迭代对象。

如:某班有4位美女的美术成绩比较好,最近新来了一个美女的美术成绩也是比较好的,要求创建一个集合,然后向该集合添加一个名字,代码如下:

name = {'美琳','梦洁','雪丽','美莲'}
name.add('梅梅')
print(name)

运行结果如下:

{'雪丽', '梅梅', '梦洁', '美莲', '美琳'}
>>> 

添加单个元素还是可以的,添加多个元素呢?我们试试下面的代码看看:

name = {'美琳','梦洁','雪丽','美莲'}
name.add(['梅梅','红红','艳艳','芳芳'])
print(name)

运行结果为:

Traceback (most recent call last):File "D:\Python\Python310\Doc\000.py", line 2, in <module>name.add(['梅梅','红红','艳艳','芳芳'])
TypeError: unhashable type: 'list'
>>> 

翻译“TypeError: unhashable type: 'list'”的结果为:TypeError:不可哈希类型:'List',意思就是不能直接添加多个元素。

但是有没有办法使用add添加多个元素呢?答案还是有的,只是麻烦一点,多费一点精力而已,拐一个弯。下面来给大家解答:

18.2.1.1.2、使用add()方法实现添加多个集合元素。

我们定义两个集合,使用add()方法,将第二个集合元素添加到第一个集合里面。

如:定义某班级上午的三节课程为一个集合,下午的三节课程为一个集合,最后输出最新的集合,代码如下:

a = {'语文','英语','数学'}
b = {'政治','历史','地理'}
for i in b:a.add(i)
print(a)    

运行结果如下:

{'语文', '数学', '英语', '政治', '地理', '历史'}
>>> 

18.2.1.2、使用update()方法添加集合元素

name = {'美琳','梦洁','雪丽','美莲'}
name.update(['梅梅'])
print(name)

运行结果如下:

{'梅梅', '梦洁', '雪丽', '美琳', '美莲'}
>>> 

站长在线温馨提醒您,这里使用update()方法添加集合元素,添加的元素使用“[]”而不是使用不用或者小括号哦!

使用不使用[]就会出现不是我们想要的结果,如:

name = {'美琳','梦洁','雪丽','美莲'}
name.update('梅梅')
print(name)

运行结果为:

{'雪丽', '梦洁', '美莲', '美琳', '梅'}
>>> 

这里面少了一个“梅”字,应该是“梅梅”而不是“梅”

同样使用小括号也是不行的,如:

name = {'美琳','梦洁','雪丽','美莲'}
name.update(('梅梅'))
print(name)

运行结果:

{'美莲', '梅', '雪丽', '美琳', '梦洁'}
>>> 

这都不是我们想要的。

当然使用使用update()方法除了可以添加一个元素以外,添加多个元素也是可以的哦!如:

name = {'美琳','梦洁','雪丽','美莲'}
name.update(['梅梅','红红','艳艳','芳芳'])
print(name)

运行结果为:

{'美琳', '红红', '梅梅', '雪丽', '芳芳', '艳艳', '梦洁', '美莲'}
>>> 

所以说如果添加多个元素的话,update()方法比add()方法要简单一点。

18.2.2、在Python中删除集合元素

讲完了添加集合元素,接下来就讲解删除集合元素了。

删除集合元素的方法有4种有4种类型分别是:使用del命令删除整个集合、使用clear()方法清空集合元素、使用pop()方法删除最后一个元素、使用remove()方法删除指定元素。下面站长在线来一一给大家讲解:

18.2.2.1、使用del命令删除整个集合

name = {'美琳','梦洁','雪丽','美莲'}
del name     # 删除整个集合,不能有打印操作

运行结果如下:

>>> 

18.2.2.2、使用clear()方法清空集合元素

name = {'美琳','梦洁','雪丽','美莲'}
name.clear()     # 清空集合元素
print(name)

运行结果如下:

set()
>>> 

18.2.2.3、使用pop()方法删除最后一个元素

name = {'美琳','梦洁','雪丽','美莲'}
name.pop()     # 删除最后一个元素
print(name)

运行结果为:

{'雪丽', '美琳', '梦洁'}
>>> 

18.2.2.4、使用remove()方法删除指定元素

name = {'美琳','梦洁','雪丽','美莲'}
name.remove('梦洁')     # 删除指定一个元素
print(name)

运行结果为:

{'美琳', '美莲', '雪丽'}
>>> 

当然,我们在删除集合元素的时候,不仅只是删除一个元素,还会删除多个元素,下面,我在介绍使用remove()方法删除多个元素。

我们直接删除多个元素看看,怎么一个效果:

a = {'语文', '数学', '英语', '政治', '地理', '历史'}
a.remove(['政治', '地理', '历史'])
print(a)

运行结果如下:

Traceback (most recent call last):File "D:\Python\Python310\Doc\000.py", line 2, in <module>a.remove(['政治', '地理', '历史'])
TypeError: unhashable type: 'list'
>>> 

错误的结果,和上面的错误一样,但是,我还是可以找得到方法的,下面就正式介绍:

18.2.2.5、使用remove()方法删除多个元素

使用remove()方法删除多个元素,我们借鉴add添加多个元素的方法来操作,设置ab两个集合,大集合删除小集合的方法去实现,代码如下:

a = {'语文', '数学', '英语', '政治', '地理', '历史'}
b = {'政治','历史','地理'}
for i in b:a.remove(i)
print(a)

运行结果如下:

{'语文', '英语', '数学'}
>>> 

18.3、Python中集合的交集、并集、差集和对称差集运算方法详解

在Python中,集合最常用的操作就是进行交集、并集、差集和对称差集的运算。

要想学习集合的交集、并集、差集和对称差集运算方法,首先我们来了解这些名词的含义:

18.3.1、集合运算的相关含义:

18.3.1.1、集合的交集的含义:

设A、B两个集合,由所有属于集合A且属于集合B的元素所组成的集合,叫做集合A与集合B的交集。在Python中,进行交集运算时使用“&”符号。

18.3.1.2、集合的并集的含义:

给定两个集合A、B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集。在Python中,进行并集运算时使用“|”符号。

18.3.1.3、集合的差集的含义:

设A,B是两个集合,则所有属于A且不属于B的元素构成的集合,叫做集合A与集合B的差集。在Python中,进行差集运算时使用“-”符号。

18.3.1.4、集合的对称差集的含义:

对称差集也称为对称差分或者补集,设A,B是两个集合,所有不相同的集合,叫做集合A与集合B的对称差集(对称差分或者补集)。在Python中,进行对称差集运算时使用“^”符号。

18.3.2、集合的运算方法

上面都是概念性的描述,下面站长在线来举实际的场景来对交集、并集、差集和对称差集运算方法进行深入浅出的解读。

场景模拟:某高中三年级,文科班高考的科目是语文、数学、英语、政治、历史和地理。理科班高考的科目是语文、数学、英语、物理、化学和生物。

设定集合A为文科班高考的科目,集合B为理科班高考的科目。

A = {'语文','数学','英语','政治','历史','地理'}

B = {'语文','数学','英语','物理','化学','生物'}

18.3.2.1、集合的交集运算方法

我们使用集合的交集运算的时候可以采用两种方式,一种是使用“&”运算符进行操作,另一种是使用intersection()方法来实现。

18.3.2.1.1、使用“&”运算符进行交集运算

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(A & B)    # 输出集合A和集合B的交集

运行结果:

{'英语', '数学', '语文'}
>>> 

18.3.2.1.2、使用intersection()方法进行交集运算

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(A.intersection(B))  # 输出集合A和集合B的交集

运行结果:

{'英语', '语文', '数学'}
>>> 

同理集合B和集合A的交集也是一样。我这里就不重复了,自己去体验一下。

18.3.2.2、集合的并集运算方法

集合的并集运算也有两种方式,一种是使用“|”运算符进行操作,另一种是使用union()方法来实现。

18.3.2.2.1、使用“|”运算符进行并集运算

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(A | B)    # 输出集合A和集合B的并集

运行结果如下:

{'数学', '生物', '政治', '物理', '地理', '化学', '语文', '英语', '历史'}
>>> 

18.3.2.2.2、使用union()方法进行并集运算

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(A.union(B))  # 输出集合A和集合B的并集

运行结果为:

{'英语', '语文', '地理', '生物', '政治', '化学', '数学', '物理', '历史'}
>>> 

同理集合B和集合A的并集也是一样。自己去体验一下吧!

18.3.2.3、集合的差集运算方法

集合的差集运算也有两种方式,一种是使用“-”运算符进行操作,另一种是使用difference()方法来实现。

18.3.2.3.1、使用“-”运算符进行差集运算

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(A - B)    # 输出集合A和集合B的差集

运行结果为:

{'历史', '地理', '政治'}
>>> 

上面是集合A和集合B的差集,但是集合B和集合A的差集就不是一样的了哦!

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(B - A)    # 输出集合B和集合A的差集

运行结果为:

{'化学', '生物', '物理'}
>>> 

从上面可以看出,集合A和集合B的差集  与  集合B和集合A的差集是不一样的,(A - B)是A中存在的部分,(B - A)是B中存在的部分。

18.3.2.3.2、使用difference()方法进行差集运算

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(A.difference(B))  # 输出集合A和集合B的差集

运行结果:

{'地理', '政治', '历史'}
>>> 

同理,使用difference()方法进行集合B和集合A的差集也是不同的

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(B.difference(A))  # 输出集合B和集合A的差集

运行结果:

{'物理', '化学', '生物'}
>>> 

18.3.2.4、集合的对称差集运算方法

集合的差集运算也有两种方式,一种是使用“^”运算符进行操作,另一种是使用symmetric_difference()方法来实现。

18.3.2.4.1、使用“^”运算符进行对称差集运算

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(A ^ B)    # 输出集合A和集合B的对称差集

运行结果为:

{'地理', '化学', '生物', '政治', '物理', '历史'}
>>> 

18.3.2.4.2、使用symmetric_difference()方法进行对称差集运算

A = {'语文','数学','英语','政治','历史','地理'}
B = {'语文','数学','英语','物理','化学','生物'}
print(A.symmetric_difference(B))  # 输出集合A和集合B的对称差集

运行结果为:

{'政治', '生物', '地理', '化学', '历史', '物理'}
>>> 

同样的,集合B与集合A的对称差集也是一样,自己去体验一下。

我们对集合的交集、并集、差集和对称差集运算方法全部详细的讲解了一遍,通过运行结果,我们得出结论:

集合中进行交集、并集、对称差集进行运算的时候,集合A与集合B,位置替换的时候,结果相同。

集合中进行差集运算的时候,集合A与集合B,位置替换的时候,结果不同,为前面那个集合独立存在的部分。

下节课程预告:站长在线零基础Python完全自学教程19:字符串的系列知识详解

相关阅读:

本站百科词条:Python

《零基础Python完全自学教程》目录 

1、认识python

2、安装python及写第一个Python程序

3、Python开发工具介绍

4、Python语法特点

5、Python中的变量

6、Python中的基本数据类型

7、Python中的基本输入和输出

8、Python中常用的运算符

9、Python中运算符的优先级和条件表达式

10、Python中的三大程序结构

11、Python中的选择语句

12、Python中的循环语句

13、Python中的break语句、continue语句和pass语句

14、Python中的序列知识详解

15、Python中的列表

16、Python中的元组系列知识

17、Python中的字典完全解读

 

这篇关于站长在线零基础Python完全自学教程18:Python中的集合完全解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978076

相关文章

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑