站长在线零基础Python完全自学教程18:Python中的集合完全解读
欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础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:字符串的系列知识详解
相关阅读:
1、认识python
11、Python中的选择语句
12、Python中的循环语句
13、Python中的break语句、continue语句和pass语句
15、Python中的列表
本文地址:https://www.olzz.com/pythonjihe.html
阿里云虚拟主机1G空间,120元一年
香港、美国虚拟主机100元一年,1000元永久
腾讯云双十一0.4折起,2核8G5M三年仅700元,2核4G8M三年仅198元
猜你喜欢