一、集合的特点与优势
(一)特性分析
反观前面的列表、元组、字符串,通过特性分析:
- 列表可修改,支持重复元素且有序
- 元组、字符串不可修改,支持重复元素且有序
(二)局限性
他们都支持重复元素。
如果场景内需要对内容做去重处理,列表、元组、字符串就不方便了。
(三)特点与优势
- 不支持元素的重复(自带去重功能)
- 内容无序。
二、基本语法
def func01():
# 定义集合字面量
{1, 2, 3, 4, ''}
# 定义集合变量
my_set = {1, 3, 1, 4, 5, 2, 0, 'xxx'}
# 定义空集合
my_set02 = set()
三、集合的常用操作
编号 | 操作 | 说明 |
1 | 集合.add(元素) | 集合内添加一个元素 |
2 | 集合.remove(元素) | 移除集合内指定的元素 |
3 | 集合.pop(元素) | 从集合中随机取出一个元素 |
4 | 集合.clear() | 将集合清空 |
5 | 集合1.defference(集合2) | 得到一个新集合,内含2个集合的差集 原有的2个集合内容不变 |
6 | 集合1.defference_update(集合2) | 在集合1中,删除集合2中存在的元素 集合1被修改,集合2不变 |
7 | 集合1.union(集合2) | 得到一个新集合,内含2个集合的全部元素 原有的2个集合内容不变 |
8 | len(集合) | 得到一个整数,记录了集合的元素数量 |
(一)名词解释
1、交集
①定义
交集是指两个集合中共同存在的元素组成的集合,即两个集合的公共部分。
②例子
假设我们有两个集合 A = {1, 2, 3} 和 B = {2, 3, 4},它们的交集为 {2, 3}
2、并集
①定义
并集是指两个集合中所有元素组成的集合,即两个集合的合并部分。
②例子
假设我们有两个集合 A = {1, 2, 3} 和 B = {2, 3, 4},它们的并集为 {1, 2, 3, 4}
3、差集
①定义
差集是指从其中一个集合中删除另一个集合中所有元素后得到的集合,即一个集合中存在,但另一个集合中不存在的元素组成的集合。
②例子
假设我们有两个集合 A = {1, 2, 3} 和 B = {2, 3, 4},它们的差集为 {1}
(二)代码演示
首先,因为集合是无序的,所以集合不支持:下表索引访问
但是:集合和列表一样,是允许修改的
def func02():
my_set01 = {'hello', 'world', '自律', '的苦', '轻若', '鸿毛', '后悔', '的痛', '重若', '泰山', 1, 3, 1, 4}
# 添加元素
my_set01.add(520)
print(f'新的集合内容为:{my_set01}')
print('-----------------------------------------------------')
# 移除集合内指定的元素
my_set01.remove('hello')
print(f'新的集合内容为:{my_set01}')
print('-----------------------------------------------------')
# 从集合内随机取出一个元素,会影响到差集的运算,取出的内容不参加差集运算
element = my_set01.pop()
print(f'随机取出的元素为: {element}')
print('-----------------------------------------------------')
# 差集
my_set02 = {'world', '自律', '的苦', '轻若', '鸿毛', '后悔'}
my_set03 = my_set01.difference(my_set02)
print(f'得到的新的集合内容为:{my_set03}')
print(f'原集合 1 的内容为:{my_set01}')
print(f'原集合 2 的内容为:{my_set02}')
# 运行之后会发现,原来集合内的元素不会发生变化
print('-----------------------------------------------------')
# 剔除差集
my_set01.difference_update(my_set02)
print(f'剔除差集之后,集合 1 的内容为:{my_set01}')
print(f'剔除差集之后,集合 2 的内容为:{my_set02}')
# 运行之后发现,集合 1 内的元素发生了变化,而集合 2 内的元素并没有发生变化
print('-----------------------------------------------------')
# 并集
my_set04 = {'hello', 'world'}
my_set05 = {'hello', 'python'}
my_set06 = my_set04.union(my_set05)
print(f'集合 4 和集合 5 的并集内容为:{my_set06}')
print('-----------------------------------------------------')
# 集合内的元素个数
my_set07 = {'I', 'want', 'to', 'be', 'better.', '我想成为更好的人'}
my_len = len(my_set07)
print(f'集合 7 的元素个数为:{my_len}')
print('-----------------------------------------------------')
# 清空集合
my_set07.clear()
print(f'集合 7 内的元素为:{my_set07}')
(三)练习案例
现有列表
my_list = ['hello', 'world', 'and', 'hello', 'python', 'and', 'i', 'want', 'to', 'be', 'better']
将列表内的元素添加至新创建的集合 my_set 中
并将集合输出打印
def func03():
my_list = ['hello', 'world', 'and', 'hello', 'python', 'and', 'i', 'want', 'to', 'be', 'better']
my_set = set()
for word in my_list:
my_set.add(word)
print(f'集合内的元素为:{my_set}')
四、总的来说
集合相对于列表、元组、字符串具有以下
(一)优点
- 集合是无序的,而列表和元组是有序的。这使得集合更加灵活,可以轻松地删除或添加元素,而无需考虑元素的顺序;
- 集合中的元素使唯一的,这使得他们更加紧凑,可以避免重复元素的问题;
- 等等等等
(二)缺点
虽然集合的优点不少,但是他却不支持下标索引和切片操作