当前位置: 首页 > news >正文

Python数据容器(列表,元组,字典) 从入门到精通

 数据容器

Python中的数据容器: 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素 每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。 数据容器根据特点的不同,如: 是否支持重复元素 是否可以修改 是否有序,等 分为5类,分别是: 列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict) 我们将一一学习它们

 数据容器:list(列表)

为什么需要列表

思考:有一个人的姓名(TOM)怎么在程序中存储? 答:字符串变量

思考:如果一个班级100位学生,每个人的姓名都要存储,应该如何书写程序?声明100个变量吗? 答:No,我们使用列表就可以了, 列表一次可以存储多个数据 列表(list)类型,是数据容器的一类,我们来详细学习它。

列表的定义

基本语法:

列表内的每一个数据,称之为元素 以 [] 作为标识 列表内每一个元素之间用, 逗号隔开 

案例演示:使用[]的方式定义列表

嵌套列表的定义

 总结:

1. 列表的定义语法 [元素1, 元素2, 元素3, ......]

2. 什么是元素? 数据容器内的每一份数据,都称之为元素

3. 元素的类型有限制吗? 元素的数据类型没有任何限制,甚至元素也可以是列表,这样就定义了嵌套列表 

列表的下标(索引)

如何从列表中取出特定位置的数据呢? 我们可以使用:下标索引

 如图,列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增 我们只需要按照下标索引,即可取得对应位置的元素。

 或者,可以反向索引,也就是从后向前:从-1开始,依次递减(-1、-2、-3......)

如图,从后向前,下标索引为:-1、-2、-3,依次递减。 

如果列表是嵌套的列表,同样支持下标索引

如图,下标就有2个层级了。

总结: 

1. 列表的下标索引是什么? 列表的每一个元素,都有编号称之为下标索引 从前向后的方向,编号从0开始递增 从后向前的方向,编号从-1开始递减

2. 如何通过下标索引取出对应位置的元素呢? 列表[下标],即可取出

3. 下标索引的注意事项: 要注意下标索引的取值范围,超出范围无法取出元素,并且会报错

 列表的常用操作(方法)

列表除了可以: 定义 使用下标索引获取值 以外,列表也提供了一系列功能: 插入元素 删除元素 清空列表 修改元素 统计元素个数 等等功能,这些功能我们都称之为:列表的方法

列表的查询功能(方法)

方法和函数功能一样, 有传入参数,有返回值,只是方法的使用格式不同:

函数的使用:

方法的使用:

关于类和方法的定义,在面向对象章节我们学习,目前我们知道如何使用方法即可。

查找某元素的下标      功能:查找指定元素在列表的下标,如果找不到,报错ValueError      语法:列表.index(元素)        index就是列表对象(变量)内置的方法(函数) 

 列表的修改功能(方法)

修改特定位置(索引)的元素值:      语法:列表[下标] = 值      可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)

插入元素:    

 语法:列表.insert(下标, 元素),在指定的下标位置,插入指定的元素 

追加元素:  

   语法:列表.append(元素),将指定元素,追加到列表的尾部 

追加元素方式2:    

 语法:列表.extend(其它数据容器),将其它数据容器的内容取出,依次追加到列表尾部 

删除元素:    

 语法1: del 列表[下标]    

 语法2:列表.pop(下标) 

删除某元素在列表中的第一个匹配项    

 语法:列表.remove(元素) 

清空列表内容,语法:列表.clear()

统计某元素在列表内的数量  

   语法:列表.count(元素) 

 统计列表内,有多少元素    

 语法:len(列表)      可以得到一个int数字,表示列表内的元素数量

列表的方法 - 总览 

编号

使用方式

作用

1

列表.append(元素)

向列表中追加一个元素

2

列表.extend(容器)

将数据容器的内容依次取出,追加到列表尾部

3

列表.insert(下标, 元素)

在指定下标处,插入指定的元素

4

del 列表[下标]

删除列表指定下标元素

5

列表.pop(下标)

删除列表指定下标元素

6

列表.remove(元素)

从前向后,删除此元素第一个匹配项

7

列表.clear()

清空列表

8

列表.count(元素)

统计此元素在列表中出现的次数

9

列表.index(元素)

查找指定元素在列表的下标

找不到报错ValueError

10

len(列表)

统计容器内有多少元素

 功能方法非常多,同学们不需要硬记下来。 学习编程,不仅仅是Python语言本身,以后根据方向,会学习更多的框架技术。 除了经常用的,大多数是记忆不下来的。 我们要做的是,有一个模糊印象,知晓有这样的用法即可。 需要的时候,随时查阅资料即可。

列表的特点

经过上述对列表的学习,可以总结出列表有如下特点:

可以容纳多个元素(上限为2**63-1、9223372036854775807个)

可以容纳不同类型的元素(混装)

数据是有序存储的(有下标序号)

允许重复数据存在 可以修改(增加或删除元素等)

总结:

1. 列表的常见方法有:

2. 列表有哪些特点?

 list(列表)的遍历

列表的遍历 - while循环

既然数据容器可以存储多个元素,那么,就会有需求从容器内依次取出元素进行操作。 将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代。

如何遍历列表的元素呢?

可以使用前面学过的while循环 如何在循环中取出列表的元素呢? 使用列表[下标]的方式取出

循环条件如何控制?

定义一个变量表示下标,从0开始 循环条件为 下标值 < 列表的元素数量

列表的遍历 - for循环 

除了while循环外,Python中还有另外一种循环形式:for循环。 对比while,for循环更加适合对列表等数据容器进行遍历。

语法:

表示,从容器内,依次取出元素并赋值到临时变量上。 在每一次的循环中,我们可以对临时变量(元素)进行处理。

每一次循环将列表中的元素取出,赋值到变量i,供操作

while循环和for循环的对比

while循环和for循环,都是循环语句,但细节不同:

在循环控制上: while循环可以自定循环条件,并自行控制 for循环不可以自定循环条件,只可以一个个从容器内取出数据

在无限循环上: while循环可以通过条件控制做到无限循环 for循环理论上不可以,因为被遍历的容器容量不是无限的

在使用场景上: while循环适用于任何想要循环的场景 for循环适用于,遍历数据容器的场景或简单的固定次数循环场景

总结: 

1. 什么是遍历? 将容器内的元素依次取出,并处理,称之为遍历操作

2. 如何遍历列表的元素? 可以使用while或for循环

3. for循环的语法:

4. for循环和while对比 for循环更简单,while更灵活 for用于从容器内依次取出元素并处理,while用以任何需要循环的场景 

 数据容器:tuple(元组)

思考:列表是可以修改的。 如果想要传递的信息,不被篡改,列表就不合适了。

元组同列表一样,都是可以封装多个、不同类型的元素在内。

但最大的不同点在于: 元组一旦定义完成,就不可修改

所以,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了

定义元组

元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。

 元组也支持嵌套:

 

 注意:元组只有一个数据,这个数据后面要添加逗号 

元组的相关操作

编号

方法

作用

1

index()

查找某个数据,如果数据存在返回对应的下标,否则报错

2

count()

统计某个数据在当前元组出现的次数

3

len(元组)

统计元组内的元素个数

 

注意事项 

元组由于不可修改的特性,所以其操作方法非常少。

元组的相关操作 - 注意事项

不可以修改元组的内容,否则会直接报错

可以修改元组内的list的内容(修改元素、增加、删除、反转等)

 不可以替换list为其它list或其它类型

元组的遍历 

同列表一样,元组也可以被遍历。 可以使用while循环和for循环遍历它

while循环

for循环

结果:

元组的特点

经过上述对元组的学习,可以总结出列表有如下特点: 可以容纳多个数据

可以容纳不同类型的数据(混装)

数据是有序存储的(下标索引)

允许重复数据存在 不可以修改(增加或删除元素等)

支持for循环

多数特性和list一致,不同点在于不可修改的特性。

总结:

1. 元组的定义方式: (元素, 元素, 元素, ......)

2. 元组的操作方法:

3. 元组的注意事项: 不可修改内容(可以修改内部list的内部元素)

4. 元组的特点: 和list基本相同(有序、任意数量元素、允许重复元素),唯一不同在于不可修改。 支持for循环

数据容器:dict(字典、映射)

Python中字典和生活中字典十分相像:

生活中的字典 

【字】:【含义】

【字】:【含义】

可以按【字】找出对应的【含义】

Python中的字典 

Key: Value

Key: Value

可以按【Key】找出对应的【Value】

老师有一份名单,记录了学生的姓名和考试总成绩。

现在需要将其通过Python录入至程序中,并可以通过学生姓名检索学生的成绩。 使用字典最为合适:

可以通过Key(学生姓名),取到对应的Value(考试成绩)

所以,为什么使用字典?     因为可以使用字典,实现用key取出Value的操作

字典的定义

字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:

使用{}存储原始,每一个元素是一个键值对

每一个键值对包含Key和Value(用冒号分隔)

键值对之间使用逗号分隔 Key和Value可以是任意类型的数据(key不可为字典)

Key不可重复,重复会对原有数据覆盖 

前文中记录学生成绩的需求,可以如下记录:

字典数据的获取

字典同集合一样,不可以使用下标索引 但是字典可以通过Key值来取得对应的Value

字典的嵌套 

字典的Key和Value可以是任意数据类型(Key不可为字典) 那么,就表明,字典是可以嵌套的 需求如下:记录学生各科的考试信息

代码: 

优化一下可读性,可以写成:

嵌套字典的内容获取,如下所示:

总结: 

1. 为什么使用字典 字典可以提供基于Key检索Value的场景实现 就像查字典一样

2. 字典的定义语法

3.  字典的注意事项 键值对的Key和Value可以是任意类型(Key不可为字典) 字典内Key不允许重复,重复添加等同于覆盖原有数据 字典不可用下标索引,而是通过Key检索Value

字典的常用操作

新增元素     

语法:字典[Key] = Value,结果:字典被修改,新增了元素

更新元素   

 语法:字典[Key] = Value,结果:字典被修改,元素被更新     

注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值

 删除元素   

 语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除

清空字典     

语法:字典.clear(),结果:字典被修改,元素被清空

获取全部的key   

 语法:字典.keys(),结果:得到字典中的全部Key

遍历字典  

   语法:for key in 字典.keys() 

 

注意:字典不支持下标索引,所以同样不可以用while循环遍历 

计算字典内的全部元素(键值对)数量     

语法:len(字典)  

   结果:得到一个整数,表示字典内元素(键值对)的数量

字典的常用操作总结

编号

操作

说明

1

字典[Key]

获取指定Key对应的Value值

2

字典[Key] = Value

添加或更新键值对

3

字典.pop(Key)

取出Key对应的Value并在字典内删除此Key的键值对

4

字典.clear()

清空字典

5

字典.keys()

获取字典的全部Key,可用于for循环遍历字典

6

len(字典)

计算字典内的元素数量

 经过上述对字典的学习,可以总结出字典有如下特点:

可以容纳多个数据

可以容纳不同类型的数据

每一份数据是KeyValue键值对

可以通过Key获取到Value,Key不可重复(重复会覆盖)

不支持下标索引 可以修改(增加或删除更新元素等)

支持for循环,不支持while循环

总结:

1. 字典的常用操作

2. 操作注意

新增和更新元素的语法一致,如果Key不存在即新增,如果Key存在即更新(Key不可重复)

3. 字典的特点

http://www.dtcms.com/a/337776.html

相关文章:

  • 基于Python的就业信息推荐系统 Python+Django+Vue.js
  • 封装,继承,多态
  • 【CV 目标检测】Fast RCNN模型③——模型训练/预测
  • day44_2025-08-18
  • iOS 性能监控全流程实践,从开发到上线的多工具组合方案
  • RabbitMQ ,消息进入死信交换机
  • QT 字节大小端转序方法
  • Qt5基础控件详细讲解
  • VSCode REST Client 使用总结
  • 【力扣-轮转数组 Java / Python】
  • leetcode415. 字符串相加
  • 【论文阅读】-《HopSkipJumpAttack: A Query-Efficient Decision-Based Attack》
  • Jenkins全链路教程——Jenkins调用Maven构建项目
  • 北京朝阳公园——夏日清凉来袭
  • 第7节 神经网络
  • 登上Nature!清华大学光学神经网络研究突破
  • FastAPI + React:现代 Web 前后端分离开发的全栈实践指南
  • 【原理】Unity GC 对比 C# GC
  • 电竞酒店和高校宿舍对AI云电竞游戏盒子的需求有什么不同?
  • 静态资源保存插件横评:Save All Resources 与 ResourcesSaverExt 哪个更适合你?
  • 无人机基础知识
  • 测绘级组合导航如何重新定义大型无人机的高精度导航标准?
  • 用本地代理 + ZIP 打包 + Excel 命名,优雅批量下载跨域 PDF
  • PDF转图片需要用到什么技术?苹果手机怎样将PDF转为jpg?
  • HTML/CSS 实战知识点总结:从基础到常用效果全解析
  • 2025 世界机器人大会启示录:机构学 × AI × 视频链路的融合之路
  • 【低空安全】低空安全简介
  • 27.Linux 使用yum安装lamp,部署wordpress
  • Kafka 零拷贝(Zero-Copy)技术详解
  • 【学习嵌入式-day-27-进程间通信】