从零开始学Python系列课程第17课:容器型数据类型之列表(上)

前言

列表算是 Python 中比较常用的一种容器型数据类型,那么什么是列表,列表有什么样的作用致使它在 Python 中这么受欢迎呢?这便是接下来我们要一起讨论的问题。
在不久之前我们讲过变量,我们将数据使用变量保存,但是如果涉及到多组数据仍然源源不断的创建变量进行保存,我们的代码就显得过于臃肿。那么有没有可能一个变量能够保存多个数据呢,答案是肯定的,我们可以先将数据依次放入容器中(这样一个保存有多组数据的容器可以被理解为是一个数据集合体的),再用变量保存这个容器,等需要用到数据时,从容器中提取出即可。

一、列表创建

列表,是一个把中括号[]作为标志、使用逗号分隔元素的容器型数据类型,容器意味着其有存储数据的功能,并且列表中可以存储任意类型的可重复元素。例如这样一个列表:

list_1 = [1, 2, 3, True, False, True, [2, 4, 6]]

如果想要创建一个列表,我们可以使用两种方法:第一种方法我们其实已经进行了编写,就是上述所举例的列表,可以直接遵循规则使用 [] 进行列表创建;另一种方法就是使用 Python 内置的 list 方法创建空列表或直接将其他容器变为列表,这其实是一种构造器语法。关于构造器语法,我们后续进行介绍。

list_2 = list()
# []list_3 = list('abcde')
# ['a', 'b', 'c', 'd', 'e']

二、列表中数据的提取

我们将数据存放到了列表中,那么应该如何再把数据取出来呢,可以使用索引、切片还有循环遍历。

1. 索引(下标)

列表,是一个有序的容器型数据类型,其中的每个元素都有自己指定的位置。
正向下标.png
负向下标.png
如图所示,索引(也可以叫做下标)分为正向索引反向索引。如果是正向索引,从左向右索引从0开始递增;如果是反向索引,从右向左索引从-1开始递减。我们可以通过索引得到有序容器中指定位置的元素,但是要注意,千万不要写超出范围的索引。
语法:有序容器[索引]

list_1 = [1, 2, 3, True, False, True, [2, 4, 6]]# 问题一:获取列表中的第一个True
print(list_1[3], list_1[-4])# 问题二:写一个超出范围的索引
print(list_1[100])
# 报错:IndexError: list index out of range

2. 切片

切片可以理解为是索引的拓展功能。切片能够从有序容器1中截取出一部分元素组成与有序容器1同类型的有序容器2
切片.png
语法:有序容器[start: end: step]

  • 切片为左闭右开区间 [start, end)
  • start 为开始截取的元素的索引,如果没写,默认从开头第一个元素开始截取。
  • end 为停止截取元素的索引,end 在开区间的位置,所以取不到,如果没写,默认截取到最后一个元素。
  • step 为步长,如果不写默认为1,通过 step 可以计算出下一个元素,下一个被截取元素的索引 = 当前被截取元素的索引 + step
  • step 必须为整数,如果 step ≥ 1,start 代表的元素必须在 end 代表的元素左边;如果 step ≤ -1,start 代表的元素必须在 end 代表的元素的右边。
  • 在切片中,正向索引和负向索引可以一起使用。
games = ['王者荣耀', '和平精英', '奇迹暖暖', '英雄联盟', '光遇', '炉石传说']
# 1. 得到['王者荣耀', '和平精英']
print(games[0: 2])
print(games[: 2: 1])# 2. 得到['王者荣耀', '奇迹暖暖', '光遇']
print(games[: 5: 2])
print(games[: -1: 2])
print(games[:: 2])# 3. 得到['炉石传说', '光遇', '英雄联盟', '奇迹暖暖', '和平精英', '王者荣耀']
print(games[::-1])# 4. 得到['英雄联盟', '和平精英']
print(games[-3: -6: -2])
print(games[3: 0: -2 ])

3. 循环遍历

列表是容器型数据类型,我们在讲述循环结构时讲过,for-in 循环可以从容器中获取数据,所以通过循环遍历可以提取到列表中的每个元素,对列表的循环遍历可以分为两种,一种是直接遍历,另一种是间接遍历。

  • 直接遍历:直接拿到每一个元素。
list_1 = [1, 2, 3, True, False, True, [2, 4, 6]]
for i in list_1:print(i)# 1
# 2
# 3
# True
# False
# True
# [2, 4, 6]
  • 间接遍历:列表中每个元素都有自己的索引,我们可以通过 len() 获取到列表的长度,从而将列表中每个元素的索引构造出来,间接性的拿到元素。
list_1 = [1, 2, 3, True, False, True, [2, 4, 6]]
for i in range(0, len(list_1)):print(f'{i}-->{list_1[i]}')# 0-->1
# 1-->2
# 2-->3
# 3-->True
# 4-->False
# 5-->True
# 6-->[2, 4, 6]

大家先把以上内容进行梳理,此部分内容在后续学习中会经常用到,希望大家能时常温故知新,我们先学理论,再进行实操训练。

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

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

相关文章

08.哲说建造者模式(Builder Pattern)

“The odds that we’re in ‘base reality’ is one in billions.” —— Elon Musk 这段话出自马斯克在2016年的一次演讲,“人类活在真实世界的几率,可能不到十亿分之一”。此言一出,可谓一石激起千层浪。有人嘲讽马斯克是“语不惊人死不休…

[2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件

哈喽大家好!你有没有需要适用于电脑的免费数据恢复软件呢?数据丢失可是个烦心事,无论是硬件故障还是软件损坏,甚至是意外删除、格式化或计算机病毒,都让人郁闷至极。当你遇到数据丢失的情况时,你一定希望能…

rollup 源码解析 - watch 监听

文章目录 rollup watch 实现流程watchWatchEmitter 实现 watchInternalWatcher 管理整个 watch 阶段Task 运行任务FileWatcher 实现文件监听 rollup watch 实现流程 每一个配置了 watch 的配置项都会变成一个 Task 任务,每个任务通过 FileWatcher 即 chokidar 进行…

elasticsearch 索引数据多了怎么办,如何调优,部署

当Elasticsearch索引的数据量增加时,可能会遇到性能瓶颈,需要进行调优。以下是一些建议和步骤,可帮助你处理数据量增加的情况: 1. 硬件升级: 增加节点数或升级硬件,包括更快的CPU、更大的内存和更快的存储…

【Git】Git的基本操作

前言 Git是当前最主流的版本管理器,它可以控制电脑上的所有格式的文件。 它对于开发人员,可以管理项目中的源代码文档。(可以记录不同提交的修改细节,并且任意跳转版本) 本篇博客基于最近对Git的学习,简单介…

JavaScript 基础学习笔记(二):数据类型、数值类型、字符串类型、布尔类型、undefined、类型转换、隐式转换、显式转换、Number

目录 一、数据类型 1.1 数值类型 1.2 字符串类型 1.3 布尔类型 1.4 undefined 二、类型转换 2.1 隐式转换 2.2 显式转换 2.3 Number 一、数据类型 计算机程序可以处理大量的数据,为了方便数据的管理,将数据分成了不同的类型: 注&a…

Python中的用户交互函数详解,提升用户体验!

更多Python学习内容:ipengtao.com 用户进行交互的Python应用程序,有许多常用的用户交互函数可以帮助创建更具吸引力和友好的用户界面。本文将介绍一些常用的Python用户交互函数,并提供详细的示例代码,以帮助大家更好地理解它们的用…

右键添加 idea 打开功能

1.开始运行regedit 2.找到: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell _3.开始设置 一、右键shell目录新建项Idea二、右键Idea新建command三、选择Idea 右侧空白出新建字符串 名字为Icon 值填入idea的运行程序地址 四、选择command 默认项填入idea的运行程序地址…

技术探秘:在RISC Zero中验证FHE——RISC Zero应用的DevOps(2)

1. 引言 前序博客: 技术探秘:在RISC Zero中验证FHE——由隐藏到证明:FHE验证的ZK路径(1) 技术探秘:在RISC Zero中验证FHE——由隐藏到证明:FHE验证的ZK路径(1) 中&…

项目中cesium使用方法

cesium方法整理 一、安装依赖 // 安装cesium npm install cesium --save // 安装turf工具 npm install truf/turf --save // 安装cesium vite插件 npm install vite-plugin-cesim --save 二、项目中引用 import * as Cesium from cesium import cesium/Build/Cesium/Widget…

【privateGPT】使用privateGPT训练您自己的LLM

了解如何在不向提供商公开您的私人数据的情况下训练您自己的语言模型 使用OpenAI的ChatGPT等公共人工智能服务的主要担忧之一是将您的私人数据暴露给提供商的风险。对于商业用途,这仍然是考虑采用人工智能技术的公司最大的担忧。 很多时候,你想创建自己…

【GOLANG】使用插件 Goanno 的方式来对方法、接口、结构体注释模板配置

直接 使用插件 Goanno 的方式来对方法、接口、结构体注释模板配置 1、简单安装 Goanno 插件 File->Settings->Plugins , 搜索 Goanno Normal Method 配置内容如下: // Title ${function_name} // Description ${todo} // Author mumu ${date} ${time} // Par…

技能分析:这就是人们写在简历上的内容

您希望您的技能部分听起来像其他人一样吗?另一方面,您是否想遗漏一项顶级技能,因为许多其他简历也列出了它?在脱颖而出和涵盖雇主寻求的所有技能之间找到平衡可能是一个挑战。 优秀的简历技能部分会考虑到每个雇主所寻求的特质。…

海云安亮相2023北京国际金融安全论坛,助力金融企业数字化转型降本增效

近日,2023北京国际金融安全论坛暨金融科技标准认证生态大会在北京金融安全产业园成功举办。深圳海云安网络安全技术有限公司(以下简称“海云安”)受邀参展亮相此次大会。海云安作为国内领先的金融科技服务商,展示了开发安全系列产…

C#中的集合

一、集合的概念 数组可以保存多个对象,但在某些情况下无法确定到底需要保存多少个对象,由于数组的长度不可变,因此数组将不再适用。 如何保存数目不确定的对象呢? 为了保存这些数目不确定的对象,C#中提供了一系列特殊…

Unity坦克大战开发全流程——开始场景——排行榜数据逻辑

开始场景——排行榜数据逻辑 排行榜单条数据 排行榜列表 然后在数据管理类中声明一个对应的字段 初始化数据 然后再在上一节课所编写的UpdatePanelInfo函数中处理数据更新的逻辑 时间换算算法 然后再在数据管理类中编写一个在排行榜中添加数据的方法以提供给外部 直到当前RankI…

【BERT】深入理解BERT模型1——模型整体架构介绍

前言 BERT出自论文:《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》 2019年 近年来,在自然语言处理领域,BERT模型受到了极为广泛的关注,很多模型中都用到了BERT-base或者是BE…

搜索算法和推荐算法、广告算法的区别

广告和推荐算法的技术框架比较相似,在线计算时都分为召回(candidates generating)和排序(candidates ranking)两个阶段(这似乎是计算资源有限条件下,所有检索问题的通用架构)。 在某…

2024年网络安全竞赛-页面信息发现任务解析

页面信息发现任务说明: 服务器场景:win20230305(关闭链接)在渗透机中对服务器信息收集,将获取到的服务器网站端口作为Flag值提交;访问服务器网站页面,找到主页面中的Flag值信息,将Flag值提交;访问服务器网站页面,找到主页面中的脚本信息,并将Flag值提交;访问服务器…

RabbitMQ详解

RabbitMQ 概念 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息&a…