【python】Python中常用的数据结构——列表、元组和字典

news2024/12/26 9:32:51

python中的数据结构

    • 列表、元组、字典的区别
    • 元组,字典,列表三者之间如何实现嵌套
    • 生成一个单一元素的元组、列表
    • 列表的地址
    • 列表、元组和字典的增删改查

列表、元组、字典的区别

列表、元组和字典是Python中常用的数据结构,它们各自有不同的特点和使用场景。

  1. 列表(List):
    列表是用方括号 [] 定义的,元素之间用逗号分隔。列表是可变的,即可以随时添加、删除和修改其中的元素。列表是有序的,可以通过索引访问其中的元素。
    例子:fruits = [‘apple’, ‘banana’, ‘orange’]

  2. 元组(Tuple):
    元组是用圆括号 () 定义的,元素之间用逗号分隔。元组是不可变的,即不能添加、删除或修改其中的元素。元组是有序的,可以通过索引访问其中的元素。
    例子:weekdays = (‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’)

  3. 字典(Dictionary):
    字典是用花括号 {} 定义的,键值对之间用冒号 : 分隔,键值对之间用逗号分隔。字典是可变的,可以通过键来添加、删除和修改其中的元素。字典是无序的,不能通过索引访问其中的元素,而是通过键来访问。
    例子:student = {‘name’: ‘John’, ‘age’: 20, ‘grade’: ‘A’}

总结:

  • 列表和元组都可以存储多个元素,列表是可变的,元组是不可变的。
  • 字典是键值对的集合,可以通过键来访问其中的值,字典是可变的。

元组,字典,列表三者之间如何实现嵌套

嵌套是指在一个数据结构中包含另一个数据结构。元组,字典,列表都可以实现嵌套。

在元组中,可以将一个元组作为另一个元组的元素,实现嵌套。例如:

nested_tuple = ((1, 2), (3, 4))

在字典中,可以将一个字典作为另一个字典的值,实现嵌套。例如:

nested_dict = {'key1': {'key2': 'value'}}

在列表中,可以将一个列表作为另一个列表的元素,实现嵌套。例如:

nested_list = [[1, 2], [3, 4]]

需要注意的是,嵌套的数据结构可以是任意的,可以是元组,字典,列表的组合,也可以是其他对象。

嵌套的好处是可以更灵活地组织和访问数据。通过嵌套,可以创建更复杂的数据结构,同时可以让代码更具可读性和可维护性。例如,在一个字典中,可以嵌套多个字典,每个字典都代表一个实体,从而更清晰地表示出实体之间的关系。

生成一个单一元素的元组、列表

生成一个包含单一元素的元组和列表可以使用以下语法:

元组:

single_tuple = (element,)

列表:

single_list = [element]

请注意,元组的单一元素后面必须加上逗号,以区分其与一个普通的括号包裹的表达式。这是因为在 Python 中,元组的定义依赖于逗号而不是括号。

列表的地址

列表的地址可以通过内置函数id()来获取。该函数返回一个对象的唯一标识符,可以用来判断两个对象是否是同一个对象。

当我们创建一个列表时,它会被分配到内存的某个位置,并返回一个地址。可以通过id()函数来获取该地址。

下面是一个示例代码:

list1 = [1, 2, 3]
list2 = [1, 2, 3]

print(id(list1))
print(id(list2))

print(list1 is list2)  # False,地址不一样
print(list1 == list2)  # True,内容一样

在上面的例子中,list1list2是两个不同的列表对象,它们的地址是不同的。但是它们的内容是相同的。

注意,is运算符用于判断两个对象是否是同一个对象。==运算符用于判断两个对象的值是否相等。

列表、元组和字典的增删改查

列表、元组和字典它们具有不同的特点和用途。下面将分别介绍它们的增删改查操作。

列表(List):

  • 增加元素:可以使用append()方法在列表末尾添加一个元素,或使用insert()方法在指定位置插入一个元素。
  • 删除元素:可以使用del语句删除列表中的一个或多个元素,或使用remove()方法根据值删除指定元素。
  • 修改元素:可以通过索引来修改列表中的元素。
  • 查找元素:可以通过索引来查找列表中的元素,也可以使用in关键字判断一个元素是否在列表中。

元组(Tuple):
元组是不可变的,因此无法直接对元组进行增删改操作。

  • 查找元素:可以通过索引来查找元组中的元素,也可以使用in关键字判断一个元素是否在元组中。

字典(Dictionary):

  • 增加键值对:可以使用字典[key] = value的方式添加一个键值对。
  • 删除键值对:可以使用del语句删除字典中的一个或多个键值对,或使用pop()方法根据键删除指定键值对。
  • 修改键值对:可以通过键获取到对应的值,然后进行修改。
  • 查找键值对:可以通过键来查找字典中的值,也可以使用in关键字判断一个键是否在字典中。

需要注意的是,列表和字典是可变的,可以直接对其进行修改操作,而元组是不可变的,无法直接对其进行修改操作。列表、元组和字典是Python中常用的数据结构,它们具有不同的特点和用途。下面将分别介绍它们的增删改查操作。

列表(List):

  • 增加元素:可以使用append()方法在列表末尾添加一个元素,或使用insert()方法在指定位置插入一个元素。
  • 删除元素:可以使用del语句删除列表中的一个或多个元素,或使用remove()方法根据值删除指定元素。
  • 修改元素:可以通过索引来修改列表中的元素。
  • 查找元素:可以通过索引来查找列表中的元素,也可以使用in关键字判断一个元素是否在列表中。

元组(Tuple):
元组是不可变的,因此无法直接对元组进行增删改操作。

  • 查找元素:可以通过索引来查找元组中的元素,也可以使用in关键字判断一个元素是否在元组中。

字典(Dictionary):

  • 增加键值对:可以使用字典[key] = value的方式添加一个键值对。
  • 删除键值对:可以使用del语句删除字典中的一个或多个键值对,或使用pop()方法根据键删除指定键值对。
  • 修改键值对:可以通过键获取到对应的值,然后进行修改。
  • 查找键值对:可以通过键来查找字典中的值,也可以使用in关键字判断一个键是否在字典中。

字典的详细遍历方法有以下几种:

  1. 遍历字典的键:使用keys()方法可以获取字典的所有键,然后通过循环遍历每一个键,得到对应的值。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

for key in my_dict.keys():
    print(key, my_dict[key])
  1. 遍历字典的值:使用values()方法可以获取字典的所有值,然后通过循环遍历每一个值。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

for value in my_dict.values():
    print(value)
  1. 遍历字典的键值对:使用items()方法可以同时获取字典的键和值,然后通过循环遍历每一个键值对。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

for key, value in my_dict.items():
    print(key, value)

以上是字典的三种基本遍历方法,可以根据需要选择适合的方法来遍历字典的元素。字典的详细遍历方法有以下几种:

  1. 遍历字典的键:使用keys()方法可以获取字典的所有键,然后通过循环遍历每一个键,得到对应的值。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

for key in my_dict.keys():
    print(key, my_dict[key])
  1. 遍历字典的值:使用values()方法可以获取字典的所有值,然后通过循环遍历每一个值。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

for value in my_dict.values():
    print(value)
  1. 遍历字典的键值对:使用items()方法可以同时获取字典的键和值,然后通过循环遍历每一个键值对。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}

for key, value in my_dict.items():
    print(key, value)

以上是字典的三种基本遍历方法,可以根据需要选择适合的方法来遍历字典的元素。

需要注意的是,列表和字典是可变的,可以直接对其进行修改操作,而元组是不可变的,无法直接对其进行修改操作。

在这里插入图片描述

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

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

相关文章

Infinitar链游新发展新机遇

区块链游戏市场在近年来经历了显著增长,吸引了大量的投资和关注。随着加密货币和NFT(非同质化代币)概念的普及,越来越多的投资者、游戏开发者和看到了区块链技术在游戏领域的应用潜力,纷纷涌入市场。区块链游戏的用户量…

昇思25天学习打卡营第07天 | 函数式自动微分

昇思25天学习打卡营第07天 | 函数式自动微分 文章目录 昇思25天学习打卡营第07天 | 函数式自动微分函数与计算图微分函数与梯度Stop GradientAuxiliary data 神经网络梯度计算总结打卡 神经网络的训练主要使用反向传播算法,首先计算模型预测值(logits&am…

Prompt-Free Diffusion: Taking “Text” out of Text-to-Image Diffusion Models

CVPR2024 SHI Labshttps://arxiv.org/pdf/2305.16223https://github.com/SHI-Labs/Prompt-Free-Diffusion 问题引入 在SD模型的基础之上,去掉text prompt,使用reference image作为生成图片语义的指导,optional structure image作为生成图片…

【Leetcode笔记】406.根据身高重建队列

文章目录 1. 题目要求2.解题思路 注意3.ACM模式代码 1. 题目要求 2.解题思路 首先,按照每个人的身高属性(即people[i][0])来排队,顺序是从大到小降序排列,如果遇到同身高的,按照另一个属性(即p…

关于SAP SAP NetWeaver AS JAVA 授权问题漏洞(CVE-2020-6287)及修复

路径参考 SAP NetWeaver AS Java 严重漏洞 (CVE-2020-6287) 安全通告 - 威胁通告 - 绿盟科技-巨人背后的专家 SAP NOTE ​​​​​​https://me.sap.com/notes/2939665 找到路径 导航到 http(s)://<主机名>:port/nwa -> 配置 -> 基础架构 -> Java HTTP 提供…

Leetcode - 周赛403

目录 一&#xff0c;3200. 三角形的最大高度 二&#xff0c;3195. 包含所有 1 的最小矩形面积 I 三&#xff0c;3196. 最大化子数组的总成本 四&#xff0c;3197. 包含所有 1 的最小矩形面积 II 一&#xff0c;3200. 三角形的最大高度 本题是一道模拟题&#xff0c;可以先排…

从零开始手写STL库:Vector

从零开始手写STL库–Vector部分 文章目录 从零开始手写STL库--Vector部分Vector是什么Vector需要包含什么函数1&#xff09;基础成员函数2&#xff09;核心功能 基础成员函数的编写核心功能函数的编写总结 Vector是什么 std::vector 是一个动态数组&#xff0c;它在内存中以连…

安装Nginx以及简单使用 —— windows系统

一、背景 Nginx是一个很强大的高性能Web和反向代理服务&#xff0c;也是一种轻量级的Web服务器&#xff0c;可以作为独立的服务器部署网站&#xff0c;应用非常广泛&#xff0c;特别是现在前后端分离的情况下。而在开发过程中&#xff0c;我们常常需要在window系统下使用Nginx作…

SwiftUI中List的liststyle样式及使用详解添加、移动、删除、自定义滑动

SwiftUI中的List可是个好东西&#xff0c;它用于显示可滚动列表的视图容器&#xff0c;类似于UITableView。在List中可以显示静态或动态的数据&#xff0c;并支持垂直滚动。List是一个数据驱动的视图&#xff0c;当数据发生变化时&#xff0c;列表会自动更新。针对List&#xf…

关于下载obsidian SimpRead Sync中报错的问题

参考Kenshin的配置方法&#xff0c;我却在输入简悦的配置文件目录时多次报错。 bug如下&#xff1a; 我发现导出来的配置文件格式如下&#xff1a; 然后根据报错的bug对此文件名进行修改&#xff0c;如下&#xff1a; 解决。

【后端面试题】【中间件】【NoSQL】MongoDB查询优化2(优化排序、mongos优化)

优化排序 在MongoDB里面&#xff0c;如果能够利用索引来排序的话&#xff0c;直接按照索引顺序加载数据就可以了。如果不能利用索引来排序的话&#xff0c;就必须在加载了数据之后&#xff0c;再次进行排序&#xff0c;也就是进行内存排序。 可想而知&#xff0c;如果内存排序…

elasticsearch-users和elasticsearch-reset-password介绍

elasticsearch 内置 elastic, kibana, logstash_system,beats_system 共4个用户&#xff0c;用途如下&#xff1a; elastic 账号&#xff1a;内置的超级用户&#xff0c;拥有 superuser 角色。 kibana 账号&#xff1a;用来连接 elasticsearch 并与之通信。Kibana 服务器以该用…

ACL2023 | 如何用175条种子数据打造顶级指令模型?揭秘self-instruct:媲美InstructGPT001的秘密武器

1. 论文的核心问题和核心贡献 核心问题&#xff1a;该论文解决的问题是大规模语言模型在微调响应指令时过于依赖人工编写的指令数据&#xff0c;这些数据往往在数量、种类和创意上都存在局限&#xff0c;阻碍了模型的广泛泛化能力。研究的主要目标是开发一种方法&#xff0c;通…

Java实习手册(小白也看得懂)

秃狼说 距离俺发布的学习路线已经六个月了&#xff0c;那我给小伙伴的学习周期是四五个月左右&#xff0c;我相信大多的小伙伴已经学习的差不多了。正好赶上暑期实习的阶段&#xff0c;在暑期找到实习就成为暑期的头等大事。 实习经验在校招的起到决定性的作用&#xff0c;所…

代码随想录算法训练营第九天|151.翻转字符串里的单词、右旋字符串、28. 实现 strStr()、459.重复的子字符串

打卡Day9 1.151.翻转字符串里的单词2.右旋字符串3.28. 实现 strStr()4.459.重复的子字符串 1.151.翻转字符串里的单词 题目链接&#xff1a;翻转字符串里的单词 文档讲解&#xff1a; 代码随想录 思路&#xff1a;首先&#xff0c;移除多余的空格&#xff1b;然后&#xff0c…

Amesim应用篇-信号传递

前言 在Amesim中常见的信号传递是通过信号线连接&#xff0c;针对简单的模型通过信号线连接还可以是信号线清晰规整&#xff0c;方便查看。如果模型较复杂&#xff0c;传递信号的元件较多时&#xff0c;此时再继续使用信号线进行信号传递&#xff0c;可能会使草图界面看起来杂…

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看

比赛获奖的武林秘籍&#xff1a;02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程&#xff0c;小白必看 摘要 本文主要介绍了大学生参加电子计算机类比赛&#xff08;电赛、光电设计大赛、计算机设计大赛、嵌入式芯片与系统设计大赛等比赛&#xff09;的流程和涉及到的知识…

一本超简单能用Python实现办公自动化的神书!让我轻松摆脱办公烦恼!

《超简单&#xff1a;用Python让Excel飞起来》 这本书旨在通过Python与Excel的“强强联手”&#xff0c;为办公人员提供一套高效的数据处理方案。书中还介绍了如何在Excel中调用Python代码&#xff0c;进一步拓宽了办公自动化的应用范围。 全书共9章。第1~3章主要讲解Python编…

软件设计之Java入门视频(11)

软件设计之Java入门视频(11) 视频教程来自B站尚硅谷&#xff1a; 尚硅谷Java入门视频教程&#xff0c;宋红康java基础视频 相关文件资料&#xff08;百度网盘&#xff09; 提取密码&#xff1a;8op3 idea 下载可以关注 软件管家 公众号 学习内容&#xff1a; 该视频共分为1-7…

【C++】 解决 C++ 语言报错:Memory Leak

文章目录 引言 内存泄漏&#xff08;Memory Leak&#xff09;是 C 编程中常见且严重的内存管理问题之一。当程序分配了内存而没有正确释放&#xff0c;导致内存无法被重新利用时&#xff0c;就会发生内存泄漏。这种错误会导致程序占用越来越多的内存&#xff0c;最终可能导致系…