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

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.mfbz.cn/a/774441.html

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

相关文章

香橙派AIpro测评:yolo8+usb鱼眼摄像头的Camera图像获取及识别

一、前言 近期收到了一块受到业界人士关注的开发板"香橙派AIpro",因为这块板子具有极高的性价比,同时还可以兼容ubuntu、安卓等多种操作系统,今天博主便要在一块832g的香橙派AI香橙派AIpro进行YoloV8s算法的部署并使用一个外接的鱼眼USB摄像头…

14-28 剑和诗人2 - 高性能编程Bend和Mojo

介绍: 在不断发展的计算世界中,软件和硬件之间的界限变得越来越模糊。随着我们不断突破技术可能性的界限,对能够利用现代硬件功能的高效、可扩展的编程语言的需求从未如此迫切。 Bend和 Mojo是编程语言领域的两种新秀,它们有望弥…

RT-Thread Studio与CubeMX联合编程之rtthread启动

看到了好多文章,在rtthread studio中启用mx,后总是复制mx相关msp函数到rt的board.c文件下,实际使用过程中发现并不需要,这里我们看下rt启动流程,看下到底需要不。 1.打开startup_stm32h743xx.S文件,看下芯片…

法国工程师IMT联盟 密码学及其应用 2023年期末考试补考题

1 JAVA 安全 1.1 问题1 1.1.1 问题 用 2 或 3 句话解释 Java 执行模型(Java 虚拟机machine virtuelle Java))中引入introduit沙箱bac sable机制 mcanisme d’excution par isolation的目的。 1.1.2 问题解释 在 Java 执行模型(Java 虚拟机…

【车载开发系列】J-Link/JFlash 简介与驱动安装方法

【车载开发系列】J-Link/JFlash 简介与驱动安装方法 【车载开发系列】J-Link/JFlash 简介与驱动安装方法 【车载开发系列】J-Link/JFlash 简介与驱动安装方法一. 软件介绍二. 下载安装包二. 开始安装三. 确认安装四. J-Flash的使用 一. 软件介绍 J-Link是SEGGER公司为支持仿真…

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

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

【IC】mismatch model

由于工艺和制造偏差的存在,相同设计参数的器件会存在参数间额差异,称为mismatch,通常用Monte Carlo去仿真多个mismatch叠加对设计的总影响。 器件偏差mismatch是工艺和制造偏差导致的,在Lot to Lot、Wafer to Wafer、Die to Die 以及in die的Device to Deview之间可见。 …

OZON怎么查看竞品数据,OZON怎么找竞品数据

在跨境电商的激烈竞争中,了解和分析竞品数据是每一位卖家优化销售策略、提升市场竞争力的关键步骤。OZON作为俄罗斯领先的电商平台,为卖家提供了丰富的数据分析工具,而萌啦ozon数据作为第三方数据分析平台,更是为卖家提供了更为全…

四、centos7安装nginx

来源网站:山海同行 来源地址:https://shanhaigo.cn 网站简介:一站式编程学习、资源、导航网站 本篇资源:以整理分类并关联本篇地址 本篇地址:https://shanhaigo.cn/courseDetail/1805875642621952000 安装系统centos7 …

CASS7.0按方向和距离绘制图形

1、绘制工具 2、按方向和距离绘制 (1)切换方向 (2)距离输入

【算法:贪心】:贪心算法介绍+基础题(四个步骤);柠檬水找零(交换论证法)

🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 前言: 暑假马上就要留校学习算法了,现在先学习一下基本的算法打打基础。本篇要讲的是…

数据库数据修改和删除操作详解

目录 🎃摘要 1. 数据库数据修改概述 2. 数据更新操作 2.1MySQL数据更新示例 3. 数据删除概述 4.使用DELETE进行数据删除 4.1 DELETE的基本语法 4.2 DELETE的使用场景 4.3 DELETE示例 5. 使用TRUNCATE进行数据删除 5.1 TRUNCATE的基本语法 5.2 TRUNCATE的…

Vue3:全局播放背景音乐

说明&#xff1a;一个全局播放的背景音乐&#xff0c;首页无音乐无音乐图标&#xff0c;在首页互动跳转页面并开始播放音乐&#xff0c;切换页面不需暂停音乐也不会重置音乐&#xff0c;可以通过音乐图标控制暂停或播放。 MusicPlay.vue&#xff08;音乐组件&#xff09; <…

新手高效指南:电子元器件BOM表创建/制作及配单全教程

在科技日新月异的今天&#xff0c;电子产品设计与制造不仅是创新精神的展现&#xff0c;更是对精确度与效率的不懈追求。在这个过程中&#xff0c;一份精细且全面的BOM&#xff08;物料清单&#xff09;犹如一座桥梁&#xff0c;连接着创意与现实世界。BOM不仅细致记录了产品所…

Facebook群发消息API接口的申请流程详解!

Facebook 群发消息api接口如何集成&#xff1f;怎么使用API接口&#xff1f; 在现代社交媒体营销中&#xff0c;群发消息是与客户保持互动的重要工具。Facebook群发消息API接口提供了一种有效的方法来实现这一目标。本文将详细介绍如何申请Facebook群发消息API接口的具体步骤和…

【qt】如何获取本机的IP地址?

需要用到这个类QHostInfo和pro里面添加network模块 用这个类的静态函数forName()来获取该主机名的信息 返回的就是这个类 这个QHostInfo类就包括主机的IP地址信息 用静态函数addresses()来获取 返回的是一个QHostAddress的容器 QList<QHostAddress>addrList hostIn…

深入分析 Android BroadcastReceiver (九)

文章目录 深入分析 Android BroadcastReceiver (九)1. Android 广播机制的扩展应用与高级优化1.1 广播机制的扩展应用1.1.1 示例&#xff1a;有序广播1.1.2 示例&#xff1a;粘性广播1.1.3 示例&#xff1a;局部广播 1.2 广播机制的高级优化1.2.1 示例&#xff1a;使用 Pending…

Gemini for China 大更新,现已上架 Android APP!

官网&#xff1a;https://gemini.fostmar.online/ Android APP&#xff1a;https://gemini.fostmar.online/gemini_1.0.apk 一、Android APP 如果是 Android 设备&#xff0c;则会直接识别到并给下载链接。PC 直接对话即可。 二、聊天记录 现在 Gemini for China&#xff…

mysql8 导入导出工具类,支持windows 和linux

概述 1&#xff09;导入导出工具类 支持windows 和linux&#xff0c;详见第3部分 2&#xff09;导入、导出参数在 dbeaver 中应用&#xff0c;详见第4部分 整理原因: 1&#xff09;中文乱码 --default-character-setutf8 2&#xff09;BLOB 导出后&#xff0c;导入失败 --he…