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

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用以任何需要循环的场景

相关文章:

Python数据容器之[列表]

Python数据容器 Python中的数据容器&#xff1a; 一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为1个元素 每一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等。 数据容器根据特点的不同&#xff0c;如&#xff1a; 是否支…...

大咖直播间”系列直播课第一期——如何抓住HarmonyOS带来的机遇?

想了解#HarmonyOS#背后隐藏着怎样的商业机遇&#xff1f; 想成功搭上万物互联快车&#xff0c;与HarmonyOS一起发展壮大&#xff1f; 想知道开发者应该怎样把握时代机遇&#xff0c;实现高质高效就业&#xff1f; 答案尽在#华为开发者学堂#《大咖直播间》第一期课程&#xff0c…...

跨域:利用JSONP、WebSocket实现跨域访问

跨域基础知识点&#xff1a;跨域知识点 iframe实现跨域的四种方式&#xff1a;iframe实现跨域的四种方式 注&#xff1a;本篇中使用到的虚拟主机也是上面iframe中配置的 目录 JSONP跨域 JSONP介绍 跨域实验&#xff1a; WebSocket跨域 websocket介绍 跨域实验 JSONP跨域 …...

java项目之戒烟网站(ssm+vue)

项目简介 戒烟网站实现了以下功能&#xff1a; 用户可以对首页&#xff0c;用户分享&#xff0c;论坛交流&#xff0c;公告文章&#xff0c;个人中心&#xff0c;后台管理等功能进行操作。 管理员可以对网站所有功能进行管理&#xff0c;包括管理用户的基本信息。 &#x1f4…...

Redis集群,你真的学会了吗?

目录 1、为什么引入集群 1.1、先来了解集群是什么 1.2、哨兵模式的缺陷 引入集群解决了什么问题 1.3、使用集群&#xff0c;如何存储数据 2、三种主流的分片方式【经典面试题】 2.1、哈希求余算法 2.1.1、哈希求余算法的介绍 2.1.2、哈希求余算法如何扩容 2.2、一致性…...

手机地磁传感器与常见问题

在手机中&#xff0c;存在不少传感器&#xff0c;例如光距感&#xff0c;陀螺仪&#xff0c;重力加速度&#xff0c;地磁等。关于各传感器&#xff0c;虽功能作用大家都有所了解&#xff0c;但是在研发设计debug过程中&#xff0c;却总是会遇到很多头疼的问题。关于传感器&…...

EF Core 数据库映射成实体类

首先在 NuGet 包管理器中安装三个包 Microsoft.EntityFrameworkCore.SqlServer 是一个用于与 SQL Server 数据库进行交互的实体框架核心包。这个包提供了方便的方法和工具&#xff0c;用于在 .NET Core 应用程序中操作 SQL Server 数据库。 Microsoft.EntityFrameworkCore.Too…...

【算法优选】 动态规划之斐波那契数列模型

文章目录 &#x1f38b;前言&#x1f340;[第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/)&#x1f6a9;题目描述&#x1f6a9;算法流程&#x1f6a9;代码实现 &#x1f384;[使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing…...

FreeRTOS知识梳理

一、RTOS:Real time operating system,中文意思为 实时操作系统&#xff0c;它是一类操作系统&#xff0c;比如uc/OS、FreeRTOS、RTX、RT-Thread 这些都是实时操作系统。 二、移植FreeRTOS到STM32F103C8T6上 interface选择CMSIS_V1,RCC选择Crystal Ceramic Resonator 。 …...

冒泡排序算法(C++版)

1、什么是冒泡排序&#xff1f; 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;其基本思想是多次遍历待排序的元素序列&#xff0c;每次比较相邻两个元素&#xff0c;如果它们的顺序不正确就交换它们&#xff0c;直到整个序列有序。在每一轮遍…...

第22章_数据库的设计规范

文章目录 范式的概念三范式范式一范式二范式三 反范式总结 范式的概念 为了建立冗余较小、结构合理的数据库&#xff0c;设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库&#xff…...

5. 深度学习——正则化

机器学习面试题汇总与解析——正则化 本章讲解知识点 什么是正则化为什么要使用正则化?详细讲解正则化本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好…...

【链表和顺序表的优缺点】

...

iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤

目录 iOS移动应用安全加固&#xff1a;保护您的App免受恶意攻击的重要步骤 摘要 引言 一、APP加固的概念 二、APP加固方案的比较 三、保护iOS应用的安全 四、总结 参考资料 摘要 本文介绍了移动应用程序&#xff08;App&#xff09;加固的概念和流程&#xff0c;以及市…...

C# .NET Core API 注入Swagger

C# .NET Core API 注入Swagger 环境 Windows 10Visual Studio 2019(2017就有可以集中发布到publish目录的功能了吧)C#.NET Core 可跨平台发布代码,超级奈斯NuGet 套件管理dll将方法封装(据说可以提高效率,就像是我们用的dll那种感觉)Swagger 让接口可视化编写时间2020-12-09 …...

家庭安全计划 挑战赛| 溺水预防

溺水预防 从了解到行动 家庭安全计划 | 少年急救官 地震避险逃生该怎么做&#xff1f; 起火了该如何应对&#xff1f; 哪些行为容易导致溺水&#xff1f; 家庭风险隐患有哪些&#xff1f; 家庭逃生演练四步骤你会吗&#xff1f; 国际救助儿童会&#xff08;英国&#xff…...

飞书开发学习笔记(五)-Python快速开发网页应用

飞书开发学习笔记(五)-Python快速开发网页应用 一.下载示例代码 首先进入飞书开放平台: https://open.feishu.cn/app 凭证与基础信息 页面&#xff0c;在 应用凭证 中获取 App ID 和 App Secret 值。 教程和示例代码位置:https://open.feishu.cn/document/home/integrating-…...

对测试职业发展的思考

虽然在测试行业摸爬滚打了很年&#xff0c;随着年龄的增长&#xff0c;职位的升迁&#xff0c;似乎已经走到了尽头&#xff0c;因而还是时不时觉得自己的职业发展目标很模糊&#xff0c;这是最近对自己职业发展的一些思考&#xff0c;希望与大家进行分享和探讨&#xff1a; 1、…...

博弈论入门

目录 什么是博弈&#xff1f; 博弈论的发展历史&#xff1f; 博弈的要素有哪些&#xff1f; 博弈的分类&#xff1f; 博弈论的应用 收益矩阵 纳什均衡的定义 博弈论的例子 1、田忌赛马 2、穷途困境 2.1优化反应函数法 2.2Nashpy库 2.3顶点枚举算法 3、Nash游戏 …...

php加密解密

public static function encrypt($data, $key) {$key 111;// 生成盐值$salt openssl_random_pseudo_bytes(16);// 使用盐值和密钥进行加密$encrypted openssl_encrypt($data, AES-128-CBC, $key, 0, $salt);// 将盐值和加密后的数据拼接$result base64_encode($salt . $enc…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...