Python数据容器之[列表]

Python数据容器

Python中的数据容器:

一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素

每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。

数据容器根据特点的不同,如:

是否支持重复元素、是否可以修改、以及是否有序等

可分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict

 

它们各有其特点,但也都满足可容纳多个元素的特性 。

列表的定义

为什么需要列表

一个人的姓名(TOM)我们想要在程序中存储可以用字符串变量,如果一个班级1是00位学生,每个人的姓名都要存储,应该如何书写程序?声明100个变量吗?

这时候就显得很麻烦,但其实我们使用列表就可以了, 列表一次可以存储多个数据。

列表的定义

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

定义语法:

使用[]的方式定义列表:

name_list = ['eternallei','Eternallei']
print(name_list)
print(type(name_list))

输出结果:

嵌套列表的定义

my_list = [[5, 2, 0], [1, 3, 1, 4]]
print(my_list)
print(type(my_list))

输出结果:

要知道的是列表是可以一次存储多个数据,且可以为不同的数据类型,支持嵌套。

列表的下标(索引) 

那么我们该如何从列表中取出特定位置的数据?

可以使用:下标索引

如图,列表中的每一个元素,都有其位置下标索引,从前向后的方向,0开始,依次递增

我们只需要按照下标索引,即可取得对应位置的元素。

# 语法:列表[下标索引]

my_list = [[5, 2, 0], [1, 3, 1, 4]]
print(my_list[0])
print(my_list[1])

结果:

嵌套列表的下标(索引)

我们也可以对刚刚的嵌套列表进行索引取值

如图,那么它的下标就有2个层级了:

my_list = [[5, 2, 0], [1, 3, 1, 4]]
# 取内层第一个的第一个元素
print(my_list[0][0])    # 结果为:5
# 取内层第二个的第三个元素
print(my_list[1][3])    # 结果为:4
# 取内层第一个的第一个元素
print(my_list[-2][-3])  # 结果为:5

索引的两个方向:从前向后的方向,编号从0开始递增、从后向前的方向,编号从-1开始递减

列表的常用操作(方法)

列表除了可以:定义、使用下标索引获取值以外,

列表也提供了一系列功能:

插入元素、删除元素、清空列表、修改元素、统计元素个数等等功能,这些功能我们都称之为:列表的方法

列表的查询 

我们知道函数是一个封装的代码单元,可以提供特定功能。

Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法

函数:

方法:

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

函数的使用:

方法的使用:

关于类和方法的定义,先知道如何使用方法即可,后续我们会学习到。

查找某元素的下标:

功能:查找指定元素在列表的下标,如果找不到,报错ValueError

语法:列表.index(元素) 

index就是列表对象(变量)内置的方法(函数)

# 查询字符所在下标索引

my_list = ['eternallei','Eternallei']
print(my_list.index('Eternallei'))   # 结果为:1

统计列表内,有多少元素

语法:len(列表)

可以得到一个int数字,表示列表内的元素数量

列表的修改功能

修改特定位置(索引)的元素值:

语法:列表[下标] =

可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)

# 使用正向下标

my_list = [5, 2, 0]
my_list[2] = 1
print(my_list)    # 结果:[5, 2, 1]

# 使用反向下标

my_list = [5, 2, 0]
my_list[-1] = 1
print(my_list)    # 结果:[5, 2, 1]

插入元素:

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

# 插入元素

my_list = [5, 2, 0]
# 在下标索引3插入字符串,因为没有所以就在0后面做到了追加效果...
my_list.insert(3, "郭佳佳")
print(my_list)

追加元素:

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

# 追加元素

my_list = [5, 2, 0]
my_list.append(1)
print(my_list)    # 结果:[5, 2, 0, 1]

my_list = [5, 2, 0]
my_list.append([1, 3, 1, 4])
print(my_list)    # 结果:[5, 2, 0, [1, 3, 1, 4]]

追加元素方式2:

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

my_list = [5, 2, 0]
my_list.extend([1, 3, 1, 4])
print(my_list)    # 结果:[5, 2, 0, 1, 3, 1, 4]

删除元素:

语法1 del 列表[下标]

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

# 删除元素

my_list = [5, 2, 0]
del my_list[0]
print(my_list)   # 结果:[2, 0]

my_list = [5, 2, 0]
my_list.pop(0)
print(my_list)   # 结果:[2, 0]

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

语法:列表.remove(元素)

清空列表内容

语法:列表.clear() 

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

语法:列表.count(元素)

列表的方法 - 总览

编号

使用方式

作用

1

列表.append(元素)

向列表中追加一个元素

2

列表.extend(容器)

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

3

列表.insert(下标, 元素)

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

4

del 列表[下标]

删除列表指定下标元素

5

列表.pop(下标)

除列表指定下标元素

6

列表.remove(元素)

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

7

列表.clear()

清空列表

8

列表.count(元素)

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

9

列表.index(元素)

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

找不到报错ValueError

10

len(列表)

统计容器内有多少元素

可以看到功能方法非常多,但不需要硬记下来。要做的是,有一个模糊印象,知晓有这样的用法即可。在需要的时候,随时查阅。

总结一下列表有如下特点:

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

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

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

允许重复数据存在

可以修改(增加或删除元素等) 

列表的遍历 - while循环

既然数据容器可以存储多个元素,那么,就会有需求从容器内依次取出元素进行操作。

将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代

可以使用前面学过的while循环使用列表[下标]的方式取出

循环条件如何控制定义一个变量表示下标,从0开始

循环条件为下标值 < 列表的元素数量

列表的遍历 - for循环

除了while循环外,Python中还有另外一种循环形式:for循环。

对比whilefor循环更加适合对列表等数据容器进行遍历。

语法:

表示,从容器内,依次取出元素并赋值到临时变量上。

在每一次的循环中,我们可以对临时变量(元素)进行处理。

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

结果大家可自行尝试

while循环和for循环的对比

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

在循环控制上:

while循环可以自定循环条件,并自行控制

for循环不可以自定循环条件,只可以一个个从容器内取出数据

在无限循环上:

while循环可以通过条件控制做到无限循环

for循环理论上不可以,因为被遍历的容器容量不是无限的

在使用场景上:

while循环适用于任何想要循环的场景

for循环适用于,遍历数据容器的场景或简单的固定次数循环场景

相比下来for循环更简单,但while更灵活,所以说for用于从容器内依次取出元素并处理,而while用以任何需要循环的场景

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

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

相关文章

Python数据容器(序列操作)

序列 1.什么是序列 序列是指&#xff1a;内容连续、有序。可以使用下标索引的一类数据容器 列表、元组、字符串。均可以视为序列 2.序列的常用操作 - 切片 语法&#xff1a;序列[起始下标:结束下标:步长]起始下标表示从何处开始&#xff0c;可以留空&#xff0c;留空视作从…

python 根据经纬度绘制点图 极投影

参考了python cartopy手动导入地图数据绘制底图/python地图上绘制散点图&#xff1a;Downloading:warnings/散点图添加图里标签_python add_feature-CSDN博客 点的颜色按照时间显示 # -*- coding: utf-8 -*- """ Created on Mon Nov 13 11:32:48 2023"&quo…

数据结构—数组栈的实现

前言&#xff1a;各位小伙伴们我们前面已经学习了带头双向循环链表&#xff0c;数据结构中还有一些特殊的线性表&#xff0c;如栈和队列&#xff0c;那么我们今天就来实现数组栈。 目录&#xff1a; 一、 栈的概念 二、 栈的实现 三、 代码测试 栈的概念&#xff1a; 栈的概念…

TSINGSEE视频智能分析人员入侵AI检测算法如何让城市管理更加高效、智慧?

在城市管理场景中&#xff0c;经常面临着禁区垂钓、非法捕捞、行人闯红灯、小区盗窃、车辆乱停乱放等一系列管理难题&#xff0c;这给城市发展带来了不小的阻力&#xff0c;同时也极易增加管理的人力、物力和财力。传统的人员巡逻监管效率低并且存在时间差&#xff0c;很难及时…

2023年数维杯国际大学生数学建模挑战赛

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 cs数模团队在数维杯前为大家提供了许多资料的内容呀&#xff0…

Python 如何实现 Command(命令)模式?什么是 Command(命令)设计模式?

什么是命令设计模式&#xff1f; 命令模式&#xff08;Command Design Pattern&#xff09;是一种行为设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而允许参数化客户端对象&#xff0c;排队请求&#xff0c;或者对请求进行操作。命令模式支持撤销操作&#xff0…

傅里叶分析(2)

在《傅里叶分析&#xff08;1&#xff09;》中&#xff0c;讲述了连续信号的傅里叶分析方法&#xff0c;本文讲述离散信号的傅里叶分析方法。 虽然电、声、光、机械振动等信号在物理上是连续函数&#xff0c;但在实际工程中&#xff0c;其通常为离散信号&#xff0c;即若干离散…

设计模式之模版方法(TemplateMethod)

模版方法 钩子函数 回调函数 在父类里面有一个模版方法&#xff0c;在这个方法里面调用了op1&#xff0c;op2&#xff0c;op3… 在子类里面如果想要改变父类的op1和op2 只需要重写op1和op2&#xff0c;那么这个重写之后的方法&#xff0c;可以在父类里面直接调用的到 例子: J…

ctfshow sql171-179

mysql 先打开我们本地的mysql&#xff0c;可以看到这些数据库 information_schema information_schema 库: 是信息数据库&#xff0c;其中保存着关于MySQL服务器所维护的所有其他数据库的信息比如数据库名&#xff0c;数据库表&#xff0c; SCHEMATA表: 提供了当前MySQL实例…

Linux下MSSQL (SQL Server)数据库无法启动故障处理

有同事反馈一套CentOS7下的mssql server2017无法启动需要我帮忙看看&#xff0c;启动报错情况如下 检查日志并没有更新日志信息 乍一看mssql-server服务有问题&#xff0c;检查mssql也确实没有进程 既然服务有问题&#xff0c;那么我们用一种方式直接手工后台启动mssql引擎来…

22.构造一个关于员工信息的结构体数组,存储十个员工的信息

结构体问题。构造一个关于员工信息的结构体数组&#xff0c;存储十个员工的信息&#xff0c;包括员工工号&#xff0c;员工工资&#xff0c;员工所得税&#xff0c;员工实发工资。要求工号和工资由键盘输入&#xff0c;并计算出员工所得税&#xff08;所得税工资*0.2&#xff0…

C语言--1,5,10人民币若干,现在需要18元,一共有多少种?

今天小编给大家分享一下穷举法的一道典型例题 一.题目描述 1,5,10人民币若干,现在需要18元,一共有多少种? 二.思路分析 总共有18块钱&#xff0c;设1元有x张&#xff0c;5元有y张&#xff0c;10元有z张&#xff0c;则有表达式&#xff1a;x5y10z18&#xff0c;穷举法最重要的…

java网络编程之UDP协议

文章目录 UDP简介一发一收客户端&#xff1a;服务端&#xff1a; 多发多收实现多开客户端&#xff1a;服务端 UDP简介 UDP&#xff08;User Datagram Protocol&#xff09; DatagramSocket 用于创建客户端、服务端DatagramSocket() :创建客户端的Socket对象&#xff0c;系统随…

Java 算法篇-深入了解单链表的反转(实现:用 5 种方式来具体实现)

&#x1f525;博客主页&#xff1a; 小扳_-CSDN博客 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 单链表的反转说明 2.0 单链表的创建 3.0 实现单链表反转的五种方法 3.1 实现单链表反转 - 循环复制&#xff08;迭代法&#xff09; 3.2 实现单链表反转 - 头插法 3…

什么是浏览器指纹?指纹浏览器如何避免浏览器指纹的追踪识别?

在做独立站跨境电商的过程中&#xff0c;海外社交媒体平台已成为我们必不可少的交易渠道。但是&#xff0c;由于各大平台对账号管理极其严格&#xff0c;对账户进行严密监控也成为了常态。这当然与浏览器指纹识别有关&#xff0c;今天龙哥就给大家科普一下什么是浏览器指纹&…

Autosar模块介绍:Memory_4(EA-EE抽象)

上一篇 | 返回主目录 | 下一篇 Autosar模块介绍&#xff1a;Memory_4(EA-EE抽象 1 基本术语解释2 Ea组成结构图3 Ea基本操作3.1 通用操作3.2 作业的进程&#xff08;通用需求&#xff09;3.3 读操作过程3.4 写操作过程3.5 擦除过程3.6 比较过程 4 Ea常用操作时序4.1 初始化4.2…

如何搞垮一个测试团队?

要想彻底搞垮一个测试团队并非易事&#xff0c;需要多角色通力配合、多方联动、综合施策&#xff0c;才能达到目的。 本文从实践经验出发&#xff0c;为大家总结了搞垮测试团队的18项措施&#xff0c;或许可以给大家带来一些启发。 — 1 — QA QA作为质量管理者&#xff0c;…

轻量封装WebGPU渲染系统示例<29>- 深度模糊DepthBlur(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/DepthBlur.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: const blurRTTTex0 { diffuse: { uuid: "rtt0", …

【vue】虚拟dom的原理是什么?手写实现虚拟dom !

1.虚拟dom的原理 虚拟 DOM 是对 DOM 的抽象&#xff0c;本质上就是用 JavaScript 对象来描述 DOM 结构。Vue.js 中关于虚拟 DOM 的实现主要进行了以下几个步骤&#xff1a; 1.生成虚拟 DOM&#xff1a; Vue.js 使用 render 函数来依据模板代码生成虚拟 DOM。在这个过程中&a…

【Java 进阶篇】JQuery DOM操作:Class属性的舞蹈魔法

在前端的世界中&#xff0c;JQuery如同一位舞者&#xff0c;通过灵活的舞步为我们展示了操纵HTML元素的艺术。而在这场舞蹈的精彩演出中&#xff0c;Class属性的操作是一项极富魅力的技艺。在本篇博客中&#xff0c;我们将深入研究JQuery DOM操作中的Class属性操作&#xff0c;…