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

    时间: 浏览:963次  来源:站长在线
欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础Python完全自学教程》今天给大家分享的是第18课《Python中的集合完全解读》。本节课是一个大课,我分了这些知识点进

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


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中的字典完全解读

本文地址:https://www.olzz.com/pythonjihe.html
码字不易,打个赏呗
杨泽业感谢你的支持!

猜你喜欢

域名pythonw.cn出售

域名pythonw.cn的详细信息:Python网

2022-08-06  分类:域名出售  浏览:1083次


站长在线Python教程:Python中类定义详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中类定义详解》。

2022-02-23  分类:Python学堂  浏览:1283次


站长在线Python教程:python中面向对象相关概述详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《python中面向对象相关概述详解》。本文的主要内容有:面向对象是什么、面向对象中的对象是什么、Python中的类是什么、面向对象编程的特点有哪些?

2022-02-14  分类:Python学堂  浏览:1111次


站长在线零基础Python完全自学教程23:函数的返回值、作用域和匿名函数

导读:欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第23课《函数的返回值、作用域和匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值、Python函数中的局部变量、Python函数中的全局变量、Python函数中的匿名函数等内容。

2022-02-09  分类:Python学堂  浏览:972次


站长在线Python教程:Python函数中的匿名函数详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python函数中的匿名函数详解》。本文的主要内容有:匿名函数的定义、匿名函数的表达式、匿名函数的注意点、匿名函数的优点、匿名函数的应用举例。

2022-02-01  分类:Python学堂  浏览:1119次


站长在线Python教程精讲:在Python函数中的全局变量详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中的全局变量详解》。本文的主要内容有:什么是全局变量、在函数外部定义的变量是全局变量、在函数内部定义中添加global关键词后变成全局变量。

2022-01-10  分类:Python学堂  浏览:1183次


站长在线Python教程精讲:在Python函数中的局部变量详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python函数中的局部变量详解》。本文的主要内容有:变量的作用域的概念、局部变量的概念、局部变量的举例。

2022-01-06  分类:Python学堂  浏览:1104次


Python常用英语及用法

站长在线站长,准备系统的学习Python知识,但是对我来说,英语实在是太差了,当然我知道的是,不仅仅我,很多人在学习Python的时候,也是不知道这些英语单词的意思与用法的,在这里站长在线站长就把这些英语整理出来,把英语以及中文意思、用法一起贴出来,让大家一起来学习。

2022-01-02  分类:Python学堂  浏览:1335次


站长在线Python精讲:Python中函数的返回值

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中函数的返回值》。本文的主要内容有:函数的返回值的含义、函数设置返回值的作用、return语句位置与多条 return语句的总结。

2021-12-29  分类:Python学堂  浏览:1260次


站长在线零基础Python完全自学教程22:在Python中函数的参数传递

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第22课《在Python中函数的参数传递》。本文是一个大课程分成了下面5节小课程:在Python函数中理解形式参数和实际参数、在Python函数中参数传递的位置参数详解、在Python函数中的关键字参数详解、在Python函数中的默认参数详解、在Python函数中的可变参数详解。

2021-12-26  分类:Python学堂  浏览:1125次