探索集合python(Set)的神秘面纱:它与字典有何不同?

 

 新书上架~👇全国包邮奥~

python实用小工具开发教程icon-default.png?t=N7T8http://pythontoolsteach.com/3

 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~

目录

一、集合(Set)与字典(Dictionary)的初识

1. 集合的无序性

2. 集合的唯一性

二、集合的内部实现原理

1. 哈希函数的作用

2. 冲突解决

三、集合的使用场景与示例

1. 去除重复元素

2. 交集、并集和差集运算


一、集合(Set)与字典(Dictionary)的初识

    在编程的世界里,字典和集合都是常见的数据结构,但它们的用途和特点却大不相同。就像字典为我们提供了键值对的存储方式,集合则以其独特的无序性和唯一性著称。

1. 集合的无序性

    与字典不同,集合并不保证元素的顺序。这意味着,当你向集合中添加元素时,这些元素在集合中的位置可能会因各种因素而改变。但正是这种无序性,使得集合在处理一些不需要特定顺序的场景时,表现出更高的效率。

2. 集合的唯一性

    集合的另一个显著特点是元素的唯一性。在集合中,每个元素只能出现一次。这意味着,如果你尝试向集合中添加一个已经存在的元素,该操作将被忽略。这种特性使得集合在去除重复元素时非常有用。

二、集合的内部实现原理

    集合和字典在内部实现上都依赖于哈希表(Hash Table)。哈希表是一种通过哈希函数将键(Key)映射到值(Value)的数据结构。在集合中,哈希函数被用来将元素映射到存储位置,从而实现快速的查找和插入操作。

1. 哈希函数的作用

    哈希函数在集合中起着至关重要的作用。它通过计算元素的哈希值,将元素映射到哈希表的特定位置。这样,当需要查找或插入元素时,只需计算其哈希值,即可快速定位到相应的存储位置。

2. 冲突解决

    然而,哈希函数并不是完美的。有时,不同的元素可能会计算出相同的哈希值,从而导致哈希冲突。为了解决这个问题,集合(以及字典)采用了各种冲突解决策略,如链地址法、开放地址法等。这些策略能够有效地处理哈希冲突,保证集合的正常运行。

三、集合的使用场景与示例

    集合在实际编程中有着广泛的应用场景。下面,我们将通过一些示例来说明集合的用途。

1. 去除重复元素

    假设你有一个包含重复元素的列表,你可以使用集合来轻松地去除这些重复元素。例如,你可以使用Python的set()函数将列表转换为集合,从而去除重复元素。以下是一个简单的示例:

# 原始列表,包含重复元素  
original_list = [1, 2, 3, 2, 4, 5, 5, 6]  
  
# 将列表转换为集合,去除重复元素  
unique_set = set(original_list)  
  
# 将集合转换回列表(如果需要)  
unique_list = list(unique_set)  
  
print(unique_list)  # 输出:[1, 2, 3, 4, 5, 6]

2. 交集、并集和差集运算

    集合还支持交集、并集和差集等运算。这些运算在处理多个集合之间的关系时非常有用。以下是一些示例:

# 定义两个集合  
set1 = {1, 2, 3, 4}  
set2 = {3, 4, 5, 6}  
  
# 交集运算  
intersection = set1 & set2  
print(intersection)  # 输出:{3, 4}  
  
# 并集运算  
union = set1 | set2  
print(union)  # 输出:{1, 2, 3, 4, 5, 6}  
  
# 差集运算(set1中有但set2中没有的元素)  
difference = set1 - set2  
print(difference)  # 输出:{1, 2}

    通过这些示例,我们可以看到集合在编程中的强大功能和灵活性。无论是去除重复元素还是进行集合运算,集合都能为我们提供高效且简洁的解决方案。 

 非常感谢您花时间阅读我的博客,希望这些分享能为您带来启发和帮助。期待您的反馈与交流,让我们共同成长,再次感谢!

👇热门内容👇 

python使用案例与应用_安城安的博客-CSDN博客

软硬件教学_安城安的博客-CSDN博客

Orbslam3&Vinsfusion_安城安的博客-CSDN博客

网络安全_安城安的博客-CSDN博客

教程_安城安的博客-CSDN博客

python办公自动化_安城安的博客-CSDN博客

👇个人网站👇

安城安的云世界

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/647248.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

元组的创建和删除

目录 使用赋值运算符直接创建元组 创建空元组 创建数值元组 删除元组 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元组(tuple)是Python中另一个重要的序列结构&#…

太空几乎没有阻力,飞船理论上能一直加速,为何还说星际旅行很难

太空几乎没有阻力,飞船理论上能一直加速,为何还说星际旅行很难? 答案 现代科学认为,我们的地球诞生于46亿年前,也就是太阳系诞生初期,在太阳系中一共有八大行星,而地球是唯一一颗诞生了生命的…

性能测试学习之基本概念和认识(一)

一、概念 1.性能测试:使用自动化工具,模拟不同场景,对软件各项性能指标进行测试和评估的过程 2.包括:a.后台处理程序的性能;b.应用服务器、数据库、架构设计是否存在瓶颈;c.服务器资源消耗(CPU、内存、磁…

游戏行业 2024 Q1报告 | 国内同比上升7.6%,海外收入同比环比双增长,码住!

作为中国音像与数字出版协会主管的中国游戏产业研究院的战略合作伙伴,伽马数据发布了《2024年1—3月中国游戏产业季度报告》。 数据显示, 2024年1—3月,中国游戏市场实际销售收入726.38亿元,同比增长7.60%,主要受移动游…

Linux防火墙之iptables(二)

一.SNAT策略概述 1.SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由) 局域共享上网 2.SNAT 策略的原理 源地址转换,Source Network Address Translation 修改数据包的源地址 未作SNAT转换…

一.架构设计

架构采用 ddd 架构,不同于传统简单的三层的架构,其分层的思想对于大家日后都是很有好处的,会给大家的思想层级,提高很多。 传统的项目 现有的架构 采取ddd架构,给大家在复杂基础上简化保留精髓,一步步进行…

TOTP 算法实现:双因素认证的基石(C/C++代码实现)

双因素认证(Two-Factor Authentication, 2FA)扮演着至关重要的角色。它像是一道额外的防线,确保即便密码被窃取,不法分子也难以轻易突破。在众多双因素认证技术中,基于时间的一次性密码(Time-Based One-Tim…

【古董技术】ms-dos应用程序的结构

序 制定一个MS-DOS应用程序计划需要认真分析程序的大小。这种分析可以帮助程序员确定MS-DOS支持的两种程序风格中哪一种最适合该应用程序。.EXE程序结构为大型程序提供了好处,因为所有.EXE文件之前都有额外的512字节(或更多)的文件头。另一方…

【MinIO学习】

OSS Docker podman MinIO服务器 MinIO客户端 Bucket Object 时间同步 The difference between the request time and the servers time is too large。 URL

AGI系列(1):掌握AI大模型提示词优化术,提问准确率飙升秘籍

当我们向AI大模型提问时,通常人们的做法是有什么问题,就直接去问,得到大模型的回复结果,时好时坏,完全没有可控性。 那么有没有一种方式或是一套方法,可以让我们向大模型提问时,得到的结果更准确…

二十九篇:构建未来:信息系统的核心框架与应用

构建未来:信息系统的核心框架与应用 1. 引言 在这个充满挑战和机遇的信息时代,信息系统已经成为现代组织不可或缺的神经中枢。它们不仅革新了我们处理信息的方式,更是极大地增强了决策制定的效率和质量。在这篇文章中,我将分享我…

JMeter学习笔记二

面试题: 1.做接口测试时,你是怎么做的数据校验(返回值验证)?一般你会验证哪些数据? 校验code 200(说明后端接到了你的请求,并且给了应答) 返回信息 sucess 2.有1w个用户名密码需要登录&#xff…

搭建Harbor镜像仓库

前言 1、系统版本:CentOS9 2、harbor版本:v2.9.4 3、提前安装好docker和docker-compose,参考地址。我这里安装的版本是docker:26.1.3 docker-compose:v2.27.1 安装步骤 下载安装包 1、下载地址:ha…

基于门控的循环神经网络:GRU

门控循环单元(GatedRecurrentUnit,GRU)网络,也是一种基于门控的循环神经网络,但是名气不如LSTM大,GRU是对LSTM的一种改版,可以理解为是LSTM的简化版。LSTM有三个门,输入门&#xff0…

代码随想录-Day20

654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums…

探索Python列表的奥秘:从零开始学习

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、列表简介与用途 二、列表的创建与访问 三、列表的增删改查 四、列表生成式与高级操作…

The view model in Acise

在FreeCAD中,借助于Boost Signals2实现了业务层、显示层的分层,但整个FreeCAD Gui层却采用了Coin3D进行渲染,很难在这方面进行扩展。 相较之下,在SALOME中,可以为不同的Module指定特定的ViewModel,支持Ope…

Sping源码(八)—Spring事件驱动

观察者模式 在介绍Spring的事件驱动之前,先简单的介绍一下设计模式中的观察者模式。 在一个简单的观察者模式只需要观察者和被观察者两个元素。简单举个栗子: 以警察盯梢犯罪嫌疑人的栗子来说: 其中犯罪嫌疑人为被观察者元素而 警察和军人为…

C++ List完全指南:使用方法与自定义实现

文章目录 list的使用几种构造函数 list的实现1.节点类的定义1.1节点类的构造函数 2.正向迭代器实现2.1operator*重载2.2operator->重载2.3operator重载2.4operator--2.5operator和operator! 3.反向迭代器实现3.1operator*重载3.2operator->重载3.3operator重载…

音视频入门基础:像素格式专题(3)——FFmpeg源码解析BMP格式图片的底层实现原理

音视频入门基础:像素格式专题系列文章: 音视频入门基础:像素格式专题(1)——RGB简介 音视频入门基础:像素格式专题(2)——不通过第三方库将RGB24格式视频转换为BMP格式图片 音视频…