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

news2025/1/19 14:23:44

前言

列表算是 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.coloradmin.cn/o/1344917.html

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

相关文章

【动态规划精选题目】3、简单多状态模型

此动态规划系列主要讲解大约10个系列【后续持续更新】 本篇讲解简单多状态模型中的9道经典题,会在讲解题目同时给出AC代码 目录 1、按摩师 2、力扣198:打家劫舍1 3、打家劫舍II 4、删除并获得点数 5、 粉刷房子 6、力扣309:买卖股票的最佳时机含冷冻期 7、 买…

MySQL入门教程-触发器

9.触发器 什么是触发器 触发器(trigger):监视某种情况,并进行某种操作,它的执行并不是程序调用,也不是手工启动,而是由事件来触发,例如:对一张表进行操作(插入,更新&…

Winform RDLC报表(数据库连接、报表函数使用、动态表头)

文章目录 NuGet安装库数据库连接报表设计报表引用添加报表 数据集设计方法一手动添加方法二——连接数据库添加 关联报表与数据集表格数据与数据集数据设计表格格式、字体设计报表数据字段绑定 Winform 使用报表控件数据库填充数据集从数据库获取与数据源相同字段的数据 动态表…

城市生态数据大屏,PSD设计稿

现分享生态系统可视化大数据大屏的 Photoshop 源文件,下载即用!以下为截图示意。 若需 更多行业 相关的大屏,请移步小7的另一篇文章:200套精选数据可视化大屏,大屏PSD设计(各行业大屏UI)https:…

Pandas教程(一)—— 数据结构

前言 Pandas是贯穿数据分析的主要工具之一,它经常和其他数值计算工具一起使用(例如:Numpy、SciPy和matplotlib)。尽管pandas采用了很多NumPy的代码风格,但二者最大的区别是:pandas主要用于处理表格型或异质…

机器学习系列11:减少过拟合——L1、L2正则化

如果我们注意到模型在训练集上的表现明显优于模型在测试集上的表现,那么这就是模型过拟合了,也称为 high variance。 产生的过拟合的原因是对于给定的训练集数据来说,模型太复杂了。有几种可以减少过拟合的方法: 收集更多的训练数…

洛谷 P1086:花生采摘 ← 结构体

【题目来源】https://www.luogu.com.cn/problem/P1086https://www.acwing.com/problem/content/description/420/【题目描述】 在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图 1)。 有经验的多多一眼就能看…

Net6 Core webApi发布到IIS

Net6 Core Api发布到IIS不同于webapi,依赖框架不同,配置也移至项目内Program.cs 一、发布到指定文件夹和IIS,不过注意IIS应用程序池选择的是 “无托管代码“ 在IIS管理器中点击浏览,访问接口路径报500.19,原因是所依赖…

Prometheus告警处理

Alertmanager介绍 Prometheus 包含一个报警模块,就是 AlertManager,Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重、降噪、分组等,是一款前卫的告警…

链表精选题集

目录 1 链表翻转 题目链接: 解题: 试错版: 2 找中间节点 题目链接: 题解: 3 找倒数第k个节点 题目链接: 题解: 4 将两个升序链表合并为一个升序链表 题目链接: 题解: …

[电磁学]猴博士不挂科

1 利用表格求场强 2 利用叠加求场强 3 利用积分求场强 电场立库仑力 球的面积公式是4πr,其中r为球的半径。 球的体积公式是(4/3)πr,其中r为球的半径。 带电物体有体积:

软件测试/测试开发丨Python 内置库 OS 学习笔记分享

os 概述 os: Operating System os 使用 导入 os 模块 查看 os 模块使用文档 help(os)dir(os) import os# 查看os模块说明文档 help(os)# 查看os模块的属性和方法 print(dir(os))os 操作系统相关 os.name:获取系统名称os.environ:获取系统环境变量信…

是时候将javax替换为Jakarta了

开始 相信很多朋友在使用新版本的Spring的时候,发现了一些叫jakarta的包,看起来有点陌生。 很多时候,比较纠结不知道该导入哪一个包。 jakarta其实就是之前的javax。 主要JavaEE相关的,从之前javax名字也可以看出来&#xff0…

【AMD Xilinx】ZUBoard(2):通过AXI GPIO控制PL端的管脚输出

【AMD Xilinx】ZUBoard(2):通过AXI GPIO控制PL端的管脚输出 一、基本功能和流程二、Vivado工程1. 总体框图2. AXI GPIO相关部分3. 配置AXI GPIO4. 绑定管脚4.1 根据原理图查找对应管脚4.1.1 LED04.1.2 LED1 4.2 I/O Planning 5. XDC 三、ARM代…

python+django游戏分享论坛网站49c2c

本系统主要包括管理员和用户两个角色组成;主要包括首页、个人中心、用户管理、游戏类型管理、游戏文章管理、交流论坛、系统管理等功能的管理系统。 系统权限按管理员和用户两类涉及用户划分。 (1)管理员功能需求 管理员登陆后,主…

c++学习笔记-提高篇-STL-函数对象

目录 一、函数对象 二、函数对象使用 三、谓词 1、概念 2、一元谓词 3、二元谓词 插入一条sort函数源码 四、内建函数对象 1.基本概念 2、算数仿函数 3、关系仿函数 4、逻辑仿函数 一、函数对象 函数对象概念 (1)重载函数调用操作符的类&a…

ESP32:整合存储配网信息和MQTT笔记

文章目录 1.给LED和KEY的所用IO增加配置项1.1 增加配置文件1.2 修改相应的c源码 2. 把mqtt\tcp的工程整合到一起2.1 在何处调用 mqtt_app_start() 3. 测试MQTT4. 完整的工程源码 有一段时间没有玩ESP32,很多知识点都忘记了。今天测试一下MQTT,做个笔记。…

Vue.js学习笔记(1)——Visual Studio Code搭建Vue.js框架

1 安装Node.js 1、下载安装包:进入官网(https://nodejs.org/en),下载左侧的稳定版。 2、选择安装位置,不用勾选自动安装必要工具。 其他都默认Next。 配置环境,具体参考本文章: https://blo…

数据结构之树 --- 二叉树 < 堆 >

目录 1. 树是什么&#xff1f; 1.1 树的表示 2. 二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储结构 2.4.1 顺序存储 2.4.2 链式存储 3. 二叉树顺序结构的实现 <堆> 3.1 二叉树的顺序结构 ​编辑 3.2 堆的概念及结构 ​编辑…

啊?这也算事务?!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…