Python中的数据结构:五彩斑斓的糖果盒

在Python编程的世界里,数据结构就像是一个个五彩斑斓的糖果盒,每一种糖果都有其独特的味道和形状。这些多姿多彩,形状和味道各异的糖果盒子包括了:List(列表)、Tuple(元组)、Dictionary(字典)和Set(集合)。只有充分了解每种糖果的特性及何时品尝最佳,才是制作美味佳肴的关键。现在,就让我们一起打开这个充满奇幻的数据结构糖果盒,开始一场探索这些有趣糖果盒的奇妙之旅吧!

首先,让我们的脚步停留在糖果盒中的第一种特殊糖果——List。List这个小家伙就像是一个魔法糖果袋,它的大小可以随时变化,仿佛拥有了伸缩自如的超能力。你可以随意往里面添加、删除或者修改糖果,就像是一个充满惊喜的宝盒。比如,你有一个糖果清单,买了新的糖果就放进去,不再喜欢的糖果就拿出来,简直方便得不要不要的!在Python的世界里,我们这样创建一个List糖果盒:mylist = [1, 2, 3]。看,是不是简单又有趣?

接下来,我们来到了Tuple糖果盒前。Tuple和List有些相似,但它是一个守规矩的家伙。一旦创建了Tuple,就不能修改它的大小或内容,就像是一个密封的盒子。这种特性让Tuple成为了一个很好的数据存储选择,特别是当你需要确保数据不会被意外修改的时候。创建一个Tuple也很简单:mytuple = (1, 2, 3)。

现在,让我们走进Dictionary糖果盒的领地。Dictionary是一个喜欢配对的家伙,它由键(key)和值(value)组成。每个糖果都有一个独特的名字(键),而这个名字对应的就是糖果本身(值)。就像在电话簿中查找某个人的名字一样,我们可以快速找到Dictionary中的某个键对应的值。在Python中,我们这样创建一个Dictionary:mydict = {'Alice': 123, 'Bob': 456}。有了Dictionary,我们可以快速查找到某个键对应的值,非常方便。

最终,我们抵达了Set糖果的奇幻屋。Set糖果与众不同,每一颗都独一无二,宛如一个收藏家的梦寐以求的藏品陈列。当你希望从一大堆糖果中挑出那些独一无二的口味时,Set糖果就是你的完美助手。在Python的世界里,创建一盒Set糖果非常简单:myset = {1, 2, 3}。

在我们的故事中,List糖果盒、Tuple糖果盒、Dictionary糖果盒和Set糖果盒都是Python世界里的超级英雄,它们各自拥有独特的超能力,帮助我们解决各种编程难题。现在,你已经认识了这四种糖果盒,不妨去Python的世界里,和它们一起展开一场精彩的冒险吧!

最后给大家详细梳理一下Python中的数据结构(非常重要,建议收藏哦):


一、List(列表)

Python中的列表(List)是一种有序的集合,可以随时添加和删除其中的元素。以下是一些常用的列表操作:

1. 创建列表:使用方括号`[]`创建一个空列表,或者在方括号内添加元素来创建一个包含元素的列表。

empty_list = []
fruits = ['apple', 'banana', 'cherry']

2. 访问列表元素:通过索引访问列表中的元素,索引从0开始。

first_fruit = fruits[0]  # 'apple'
second_fruit = fruits[1]  # 'banana'

3. 修改列表元素:通过索引赋值来修改列表中的元素。

fruits[0] = 'orange'  # 将第一个元素改为'orange'

4. 添加元素:使用`append()`方法在列表末尾添加元素,或者使用`insert()`方法在指定位置插入元素。

fruits.append('grape')  # 在列表末尾添加'grape'
fruits.insert(1, 'kiwi')  # 在索引1处插入'kiwi'

5. 删除元素:使用`del`关键字删除指定索引的元素,或者使用`remove()`方法删除指定的元素。

del fruits[0]  # 删除第一个元素
fruits.remove('banana')  # 删除'banana'

6. 列表切片:使用切片操作符`:`获取列表的一部分。

sub_list = fruits[1:3]  # 获取索引1到2的元素,不包括索引3的元素

7. 列表长度:使用`len()`函数获取列表的长度。

length = len(fruits)  # 获取列表的长度

8. 列表排序:使用`sort()`方法对列表进行排序,或者使用`sorted()`函数返回一个新的排序后的列表。

fruits.sort()  # 对原列表进行排序
sorted_fruits = sorted(fruits)  # 返回一个新的排序后的列表

9. 列表遍历:使用`for`循环遍历列表中的元素。

for fruit in fruits:print(fruit)

10. 列表推导式:使用简洁的语法快速生成列表。

squares = [x**2 for x in range(1, 6)]  # 生成一个包含1到5的平方数的列表

二、Tuple(元组)

Python中的元组(Tuple)是一种不可变的序列类型,用于存储一组有序的数据。元组的元素可以是任意类型,包括数字、字符串、列表等。元组的创建很简单,只需将元素放在圆括号内即可。例如:

my_tuple = (1, 2, 3)

元组的主要特点如下:

1. 不可变性:元组一旦创建,其内容就不能被修改。这意味着我们不能添加、删除或更改元组中的元素。

2. 有序性:元组中的元素是有序的,可以通过索引访问。

3. 可重复性:元组可以包含重复的元素。

4. 支持嵌套:元组可以包含其他元组作为其元素。

5. 支持解包:可以将元组的元素分配给多个变量。

以下是一些常用的元组操作:

1. 访问元素:通过索引访问元组中的元素。

my_tuple = (1, 2, 3)
print(my_tuple[0])  # 输出:1

2. 切片:使用切片操作符获取元组的一部分。

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1:4])  # 输出:(2, 3, 4)

3. 遍历元素:使用for循环遍历元组中的所有元素。

my_tuple = (1, 2, 3)
for item in my_tuple:print(item)

4. 解包:将元组的元素分配给多个变量。

my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c)  # 输出:1 2 3

5. 计算长度:使用len()函数获取元组的长度。

my_tuple = (1, 2, 3)
print(len(my_tuple))  # 输出:3

6. 连接元组:使用+运算符连接两个元组。

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple)  # 输出:(1, 2, 3, 4, 5, 6)

7. 检查元素是否存在:使用in关键字检查元素是否在元组中。

my_tuple = (1, 2, 3)
print(3 in my_tuple)  # 输出:True

三、Dictionary(字典)

Python中的字典(Dictionary)是一种可变的、无序的、键值对集合。字典中的键必须是唯一的,而值可以是任意类型的数据(数字、字符串、列表、另一个字典等)。

以下是一些常见的字典操作:

1. 创建字典:使用大括号 `{}` 或 `dict()` 函数创建一个空字典,或者使用键值对初始化字典。

# 使用大括号创建字典
my_dict = {'key1': 'value1', 'key2': 'value2'}
# 使用dict()函数创建字典
my_dict = dict(key1='value1', key2='value2')

2. 访问字典中的值:通过键来访问字典中的值。

value = my_dict['key1']

3. 修改字典:可以通过键来更新字典中的值。

my_dict['key1'] = 'new_value1'

4. 添加键值对:直接通过新的键来添加键值对。

my_dict['key3'] = 'value3'

5. 删除键值对:使用 `del` 关键字删除指定的键值对。

del my_dict['key1']

6. 检查键是否存在:使用 `in` 关键字检查字典中是否存在某个键。

if 'key1' in my_dict:print("Key exists")
else:print("Key does not exist")

7. 获取所有键和值:使用 `keys()` 和 `values()` 方法分别获取字典中的所有键和值。

keys = my_dict.keys()
values = my_dict.values()

8. 遍历字典:可以使用 `items()` 方法遍历字典中的键值对。

for key, value in my_dict.items():print(f"{key}: {value}")

总结:Python字典是一种非常有用的数据结构,可以用来存储和检索键值对。它提供了许多内置方法来操作字典,如添加、删除、查找和遍历元素。

四、Set(集合)

Python中的集合(Set)是一个无序的、不重复的元素序列。它的主要用途包括成员检测和消除重复元素。集合对象还支持数学运算,如并集、交集、差集和对称差分。

以下是一些常用的集合操作及其代码示例:

1. 创建集合:使用`set()`函数或大括号`{}`创建一个空集合,或者将一个列表或其他可迭代对象转换为集合。

empty_set = set()
numbers = [1, 2, 3, 4, 5]
number_set = set(numbers)

2. 添加元素:使用`add()`方法向集合中添加单个元素。

my_set = {1, 2, 3}
my_set.add(4)

3. 删除元素:使用`remove()`方法删除集合中的指定元素,如果元素不存在则抛出KeyError异常。使用`discard()`方法删除元素,如果元素不存在则不抛出异常。

my_set = {1, 2, 3}
my_set.remove(2)
my_set.discard(3)

4. 集合运算:可以使用集合的方法进行数学运算,如并集、交集、差集和对称差分。

A = {1, 2, 3}
B = {3, 4, 5}
# 并集
union_set = A.union(B)
# 交集
intersection_set = A.intersection(B)
# 差集
difference_set = A.difference(B)
# 对称差分
symmetric_difference_set = A.symmetric_difference(B)

5. 检查子集和超集:使用`issubset()`和`issuperset()`方法检查一个集合是否是另一个集合的子集或超集。

A = {1, 2, 3}
B = {1, 2}
C = {1, 2, 3, 4}
print(B.issubset(A))  # True
print(A.issuperset(B))  # True
print(A.issubset(C))  # False

6. 清空集合:使用`clear()`方法清空集合中的所有元素。

my_set = {1, 2, 3}
my_set.clear()

7. 不可变性:集合本身是不可变的,但可以包含可变类型的元素,如列表。然而,一旦创建了集合,就不能更改其内容。

my_set = {[1, 2], [3, 4]}  # 错误,因为列表是可变的

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习落地实战:识别火车票信息

前言 大家好,我是机长 本专栏将持续收集整理市场上深度学习的相关项目,旨在为准备从事深度学习工作或相关科研活动的伙伴,储备、提升更多的实际开发经验,每个项目实例都可作为实际开发项目写入简历,且都附带完整的代…

本地多模态看图说话-llava

其中图片为bast64转码,方便json序列化。 其中模型llava为本地ollama运行的模型,如:ollama run llava 还有其它的模型如:llava-phi3,通过phi3微调过的版本。 实际测试下来,发现本地多模型的性能不佳&…

【数智化案例展】某省会城市——轨道交通线网云平台建设

‍ 逸迅科技案例 本项目案例由逸迅科技投递并参与数据猿与上海大数据联盟联合推出的《2024中国数智化转型升级创新服务企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 本项目将打造一个先进的线网指挥中心大数据平台,它将作为这座城市轨道…

钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器

BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备,专为工业环境下的高速数据传输和远程设备控制而设计,支持多种工业以太网协议,包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPC UA等。如果您正在考虑部署BL20X系列耦合…

如何制定高效的媒体公关解决方案

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体公关解决方案是指企业或组织为提升品牌形象、塑造公众认知、应对危机事件等目的,通过媒体渠道制定并实施的一系列公关策略和行动计划。这一解决方案旨在通过有效的媒体沟…

4. JavaSE ——【移位运算符】

📖 开场白 亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能&…

智慧煤矿:AI视频智能监管解决方案引领行业新变革

随着科技的飞速发展,人工智能(AI)技术已经渗透到各个行业,为传统产业的转型升级提供了强大的动力。在煤矿行业中,安全监管一直是一个重要的议题。为了提高煤矿的安全生产水平,降低事故发生率,智…

6 款 SD 卡数据恢复软件,助您恢复丢失的文件

如果您经常使用摄像机、相机或某种类型的手机,您会发现您的数据和文件存储在 SD 卡上。这使得它成为设备中非常重要的一部分。但是,SD 卡相对容易损坏,这可能会导致您的文件和数据意外丢失。 此时,您需要采取一些措施来帮助您恢复…

springboot项目 导入 maven坐标 错误 Could not transfer artifact XXX

1.报错原因 当时导入的是 redis坐标 ,导入jar 包报错(当时是网速太慢了,一直卡着不动 就关了 idea 重新下载)结果报错 之前的redis 项目都可以的,网上找了一下 都没解决 2.解决办法 既然说不能传输, 就说…

Python数据爬取(续)

如有需要阅读可在资源下载,因文章设计内容,官方大大审核无法直接通过 已上传至GitCode上,如感兴趣可观看

机器学习 | 深入理解激活函数

什么是激活函数? 在人工神经网络中,节点的激活函数定义了该节点或神经元对于给定输入或一组输入的输出。然后,将此输出用作下一个节点的输入,依此类推,直到找到原始问题的所需解决方案。 它将结果值映射到所需的范围…

【后端开发实习】用MongoDB和Redis实现消息队列搭建分布式邮件消息系统

用Redis实现消息队列并搭建分布式邮件消息系统 系统介绍Redis实现消息队列思路分析代码实现 MongoDB监听数据变化思路分析代码实现Mongoose测试连接监听mongodb数据变化 注意点 系统介绍 本次要实现的是一个能够实现实时监控Mongodb中数据变化的系统,要能够在数据发…

VGMShield:揭秘视频生成模型滥用的检测与追踪技术

人工智能咨询培训老师叶梓 转载标明出处 视频生成模型,如 Stable Video Diffusion 和 Videocrafter,已经能够生成合理且高分辨率的视频。但这些技术进步也带来了被恶意利用的风险,比如用于制造假新闻或进行政治宣传。因此,来自弗…

彩电上自带的推箱子游戏是什么编程语言开发的?

2000年左右的厦新彩电上,自带了推箱子、华容道游戏。界面如下: 在线版推箱子游戏,网址:https://www.tuixiangzi.cn/ BASIC,全称是Beginners All-purpose Symbolic Instruction Code,含义是初学者通用符号…

【杰理蓝牙开发】AC695x 按键扫描接口分析

【杰理蓝牙开发】AC695x 按键ADC接口分析 0. 个人简介 && 授权须知1. 按键扫描配置和按键消息处理1.1 参数说明1.2 按键事件说明2. 应用层处理3. 特殊按键需求3.1 特殊需求 1:组合键3.2 特殊需求 2:按键多击事件3.3 特殊需求 3:某些按键只响应单击事件0. 个人简介 &…

AI算法20-分位数回归算法Quantile Regression | QR

分位数回归算法的概念 分位数回归算法简介 分位数回归(Quantile Regression)是一种统计方法,最早由Roger Koenker和Gilbert Bassett于1978年提出。它通过估计条件分位数函数来分析自变量与因变量之间的关系,与传统的最小二乘回归…

怎么压缩视频文件?简单的压缩视频方法分享

视频已成为我们日常生活中不可或缺的一部分。但随着视频质量的提高,文件大小也逐渐成为我们分享的阻碍。如何有效压缩视频文件,使其既能保持清晰,又能轻松分享?今天,给大家分享五种实用的视频压缩方法,快来…

昇思25天学习打卡营第02天|张量 Tensor

一、什么是张量 Tensor 张量是一种特殊的数据结构,与数组和矩阵非常相似。张量(Tensor)是MindSpore网络运算中的基本数据结构。 张量可以被看作是一个多维数组,但它比普通的数组更加灵活和强大,因为它支持在GPU等加速…

项目JetCache的常见配置与使用

Hello, 大家好,今天本汪给大家带来的是JetCache在项目中的常见配置与用法讲解,接下来,随本汪一起来看看吧 一、介绍 官网地址:https://github.com/alibaba/jetcache JetCache 是一种 Java 缓存抽象,它为不同的缓存…

腾讯PAG动效工具解析

什么是PAG? 1、背景 在终端 APP 中,动画非常常见,它可以辅助视觉制造焦点,同时也可以让用户交互更加顺滑,但动画的实现却是设计师和研发群体的一个痛点。如何辅助设计师设计高性能炫酷的动画、如何将设计师设计的动画…