Python 集合探索:解密高效数据操作和快速算法的奇妙世界

简介: Python 集合探索:解密高效数据操作和快速算法的奇妙世界

前言

在 Python 的众多数据结构中,集合(Sets)是一个引人注目且实用的概念。集合提供了一种存储无顺序、唯一元素的数据结构,它们不仅可以帮助我们高效处理数据,还能应用于各种算法和问题。


本博客将带您踏上一段关于 Python 集合的探索之旅。我们将深入了解集合的基本概念、使用方法和相关操作,了解集合与其他数据结构的比较优势,以及如何利用集合来解决实际问题。


准备好开始探索 Python 集合的奇妙世界了吗?让我们一起深入了解集合的魅力,开启这段令人兴奋的学习之旅吧!🚗🚗🚗

什么是 python 集合


在Python中,集合是一个独特的元素集合。换句话说,集合是无序的,元素们彼此之间不重复的容器。当需要存储多个项目,但不关心顺序或重复时,通常可以使用集合。Python集合可以包含不同类型(整数,浮点数,元组,字符串等)的不可变类型数据,也就是说集合中不能包含列表,因为列表是可变类型。


这是因为,为了保证元素的唯一性,集合(set)内部对元素的实现依赖于散列(hash)技术。散列技术要求元素必须是不可变的类型才能确保散列值不变,因此保持集合的正确运行。列表由于是可变类型,所以不能哈希化,也就不能被加入到集合中。


集合在Python中定义为在大括号{}内放置一个逗号分隔的列表。也可以通过调用内置的 “set()” 函数从一些其他集合类型比如列表,元组构建出一个集合。

set1 = {1,13.14,'zhangsan',(3,4,5)}
print(type(set1))
print(set1)

set2 = set('zhangsan')
print(type(set2))
print(set2)


这里我们可以发现,输出集合的顺序跟我们定义集合的时候的顺序是不同的,这也体现了集合的无序性。同时因为集合的无序性,集合不支持下标操作。

set1 = {1,13.14,'zhangsan',(3,4,5)}
print(set1[0])


但是当我们需要创建一个空集合的时候,我们不能 set1 = {} ,因为这种方式是我们用来创建空字典的方式。如果我们想要创建空字典,需使用 set1 = set() 函数。

set1 = {}
print(type(set1))
set2 = set()
print(type(set2))
print(set2)

集合具有去重性

set1 = {1,2,10,10,20,20}
print(set1)


集合的特性

  1. 集合具有无序性,不支持下标操作。
  2. 集合具有去重性,可以自动去除掉重复的数据。


集合常见的操作

1)增加数据

😶‍🌫️ 1.add()

add函数可以增加单个数据,也可以增加序列。

set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.add(80)
print(set1)
set1.add(('wangwu','zhaoliu'))
print(set1)

🥶 2.update()

update 增加数据只能增加序列,而不能增加单个数据。

set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.update(1)
print(set1)

set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.update((20,60))
print(set1)

update与add函数不同的是,add函数可以增加单个数据以及序列,而update函数只允许增加序列,并且add增加序列会将整个序列当成一个数据,而update增加序列,会将序列里的数据拆分成单个数据加入集合中。


2)删除数据

👺 1.remove()

remove函数删除指定的数据,但是如果集合中不含该数据,那么就会报错。

set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.remove('zhangsan')
print(set1)

set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.remove('lisi')


💀 2.discard()

discard删除指定的数据,如果集合中不存在也不会报错。

set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.discard('zhangsan')
print(set1)
set1.discard('lisi')

😎 3.pop()

pop随机删除集合中的数据,并且返回这个数据。

set1 = {1,13.14,'zhangsan',(3,4,5)}
tmp = set1.pop()
print(set1)
print(tmp)

再次运行。


3)查找数据

in 查找数据是否在集合中,如果在则返回True,不存在返回Fasle。

not in 查找数据是否不在结合中,如果不存在返回True,存在返回False。

set1 = {1,13.14,'zhangsan',(3,4,5)}
print('zhangsan' in set1)
print('lisi' in set1)
print('zhangsan' not in set1)
print('lisi' not in set1)


相关文章
|
4天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
4天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
4天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
22 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
9天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
26 2
|
9天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
19 1
|
10天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
11天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
16天前
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
16天前
|
存储 缓存 算法
分布式缓存有哪些常用的数据分片算法?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务需求、数据特征以及系统的可扩展性要求等因素综合考虑,选择合适的数据分片算法,以实现分布式缓存的高效运行和数据的合理分布。
|
20天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型