四、Python —— 列表
文章目录
- 一、列表的初始化
- 1.1、直接初始化
- 1.2、通过 append 函数初始化
- 1.3、 通过 for 语句初始化列表长度和每个位置的数值
- 二、访问列表元素
- 2.1、越界的含义
- 三、 使用循环语句遍历列表
- 3.1、通过下标遍历
- 3.2、通过 for...in... 直接遍历
- 四、列表的切片操作
- 五、列表的复制
- 六、列表的运算
- 七、列表的常用操作
- 八、嵌套列表 (多维列表)
- 8.1、二维列表的表示
- 8.1、二维列表的输出 (遍历)
- 8.2、二维列表的初始化
- 九、补充
列表实际上就是 C++ 中的数组
一、列表的初始化
列表是一种常见的变量类型,可以存储一列元素。元素的类型可以不同,不过大多数情况下类型是相同的。
列表需要用 方括号括 起来,中间的元素用 逗号隔开,最后一个元素后可以多加一个逗号。
1.1、直接初始化
a = [] # 定义一个空列表
b = [1, 2] # 含有2个整数的列表
c = [6, "python", 3.14] # 含有3个不同类型元素的列表print(a, b, c)
"""output
[] [1, 2] [6, 'python', 3.14]"""
1.2、通过 append 函数初始化
***append()***函数的作用是,在列表末尾添加一个元素。
a = []
for i in range(5): # 初始化[0, 0, 0, 0, 0]a.append(0)
print(a)n = 4
b = []
for i in range(n): # 初始化[0, 1, 4, 9]b.append(i * i)
print(b)
1.3、 通过 for 语句初始化列表长度和每个位置的数值
a = [0 for i in range(5)] # 初始化[0, 0, 0, 0, 0]
print(a)n = 4
b = [i * i for i in range(n)] # 初始化[0, 1, 4, 9]
print(b)
二、访问列表元素
2.1、越界的含义
可以通过下标读/写列表中的元素,下标从 0 开始,也可以是 负数,负数下标表示的是 除以 列表长度的 余数 对应的位置。负数下标相当于将列表首位相接,然后 从 0 往前数。
但是 python 中同样有越界的含义,如果列表长度是 n,那么 下标 只能取 -n~n-1之间的值。
a = [0, 1, 2]
print(a[0], a[1], a[2]) # 读取列表中每个位置的值a[0] = 3 # 给列表中的某个位置写值
print(a)print(a[-1]) # 由于-1 % 3 = 2,所以表示的是a[2]
三、 使用循环语句遍历列表
3.1、通过下标遍历
a = [2, 1, 4, 5, 3]for i in range(5):print(a[i], end=' ')
3.2、通过 for…in… 直接遍历
a = [2, 1, 4, 5, 3]for x in a:print(x, end=' ')
练习:假设斐波那契数列的前两项分别是 a0=0, a1=1, 求 an。
n = int(input())a = [0 for i in range(n + 1)]
a[0] = 1
a[1] = 1for i in range(2, n+1):a[i] = a[i-2] + a[i-1]print(a[n])
四、列表的切片操作
列表的切片操作会返回一个新列表。用法:
a[begin:end]会返回包含a[begin], a[begin + 1], ..., a[end - 1]的列表。- 省略
begin时,begin的默认值为 0。 - 省略
end时,end的默认值为 列表长度。 - 如果
begin和end是 负数 时,表示的是%列表长度。 - 如果
begin > end,表示切片为 空。
注意:切片这里的 begin 和 end 与 上面列表的下表不同,列表的下标是有 越界 这个概念的,但是切片没有 (也就是说 begin 和 end 的取值范围可以无穷大)。
例如:
a = [0, 1, 2, 3, 4]print(a[1:4]) # 输出[1, 2, 3]
print(a[1:]) # 输出[1, 2, 3, 4]
print(a[:4]) # 输出[0, 1, 2, 3]
print(a[:]) # 输出[0, 1, 2, 3, 4]
print(a[-4:-1]) # 等价于print(a[1:4])
切片也支持 写操作:
a = [0, 1, 2, 3, 4]a[1:4] = [2, 3]
print(a) # 输出[0, 2, 3, 4]
五、列表的复制
列表跟其他变量类型不同,如果 用等号 复制 列表,那么 原列表和新列表 是 同一个列表。对新列表修改,会修改原列表的值。例如:
a = [0, 1, 2, 3, 4]
b = ab[0] = 5
print(a, b) # 会发现a[0]和b[0]都被修改了
"""output
[5, 1, 2, 3, 4] [5, 1, 2, 3, 4]"""
但是,切片并不是拷贝,切片可以得到一个 原列表的 浅拷贝。此时再修改新列表,原列表就 不会发生变化 了。例如:
a = [0, 1, 2, 3, 4]
b = a[:]b[0] = 5
print(a, b) # 会发现a[0]没有被修改
"""output
[0, 1, 2, 3, 4] [5, 1, 2, 3, 4]"""
六、列表的运算
| 操作 | 效果 |
|---|---|
| 列表 + 列表 | 将两个列表拼接起来,得到一个 新列表 |
| 列表 * 整数 | 将若干个自身拼接起来,得到一个 新列表 |
加法和乘法的所生成的新列表 c,并不会改变原来都两个列表 a 和 b
a = [0, 1, 2]
b = [3, 4]c = a + b # c相当于a和b的浅拷贝
print(c) # 输出[0, 1, 2, 3, 4]d = a * 3 # d相当于a的浅拷贝
print(d) # 输出[0, 1, 2, 0, 1, 2, 0, 1, 2]a += [3] # 在a的末尾添加一个新元素3
print(a) # 输出[0, 1, 2, 3]
"""output
[0, 1, 2, 3, 4]
[0, 1, 2, 0, 1, 2, 0, 1, 2]
[0, 1, 2, 3]"""
七、列表的常用操作
假设 a 是一个列表,则:
| 表示 | 操作 |
|---|---|
len(a) | 返回列表长度 |
a.append(x) | 在列表末尾添加一个新元素 |
a.pop() | 删除列表的最后一个元素 |
| ``a.reverse() | 将整个列表翻转 |
| a.sort() | 将整个列表从小到大排序 |
例如:
a = [0, 1, 2]print(len(a)) # 输出3a.append(3)
print(a) # 输出[0, 1, 2, 3]a.pop()
print(a) # 将[0, 1, 2, 3]的最后一个数删掉,所以输出[0, 1, 2]a.reverse()
print(a) # 输出[2, 1, 0]a.sort()
print(a) # 输出[0, 1, 2]
八、嵌套列表 (多维列表)
8.1、二维列表的表示
列表中的元素也可以是列表,例如:
matrix = [ # 列表中的元素也可以是列表[0, 1, 2],[3, 4, 5],[6, 7, 8], # 最后一个元素后可以添加逗号
]
8.1、二维列表的输出 (遍历)
二维列表的输出关键就在于找到 下标 和 元素 的对应关系。下面给出两种输出方式 (遍历方式):
matrix[1][0] = 99 # 修改嵌套列表中元素的值
print(matrix[1][0]) # 读取嵌套列表中元素的值"""先输出行再输出列"""
for i in range(len(matrix)): # 循环打印整个矩阵for j in range(len(matrix[i])):print(matrix[i][j], end=' ')print() # 在行末输出回车for row in matrix: # 循环打印整个矩阵for x in row:print(x, end=' ')print() # 在行末输出回车"""先输出列再输出行"""
for j in range(len(matrix[0])):for i in range(len(matrix):print(matrix[i][j], end = " ")print()
8.2、二维列表的初始化
方法一:采用 append() 函数初始化:
matrix = []for i in range(3):row = []for j in range(3):row.append(i * 3 + j)matrix.append(row)print(matrix)
方法二:采用 for 语句直接初始化:
matrix = [[i * 3 + j for j in range(3)] for i in range(3)]
print(matrix)
"""output
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]"""
九、补充
- 当需要读入一行 整数 时,可以用
a = list(map(int, input().split()))。类似地,当需要读入一行 浮点数 时,可以用a = list(map(float, input().split()))。 a[::-1]可以返回一个 逆序的 新列表。
相关文章:
四、Python —— 列表
文章目录 一、列表的初始化1.1、直接初始化1.2、通过 append 函数初始化1.3、 通过 for 语句初始化列表长度和每个位置的数值 二、访问列表元素2.1、越界的含义 三、 使用循环语句遍历列表3.1、通过下标遍历3.2、通过 for...in... 直接遍历 四、列表的切片操作五、列表的复制六…...
Paper -- 建筑高度估计 -- 基于街景图像和深度学习的城区建筑高度计算
基本信息 论文题目: Building height calculation for an urban area based on street view images and deep learning 中文题目: 基于街景图像和深度学习的城区建筑高度计算 作者及单位: – Zhen Xu Furong Zhang Yingying Wu Yajun Yang Yuan Wu – 北京科技大学城市与安全研…...
机器学习周志华学习笔记-第6章<支持向量机>
机器学习周志华学习笔记-第6章<支持向量机> 卷王,请看目录 6支持向量机6.1 函数间隔与几何间隔6.1.1 函数间隔6.1.2 几何间隔 6.2 最大间隔与支持向量6.3 对偶问题6.4 核函数6.5 软间隔支持向量机6.6 支持向量机6.7核方法 6支持向量机 支持向量机是一种经典…...
第三届航空航天与控制工程国际 (ICoACE 2024)
重要信息 会议官网:www.icoace.com 线下召开:2024年11月29日-12月1日 会议地点:陕西西安理工大学金花校区 (西安市金花南路5号) 大会简介 2024年第三届航空航天与控制工程国际学术会议(ICoACE 2024&a…...
【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)
第8章 数据仓库Hive的安装和使用 8.1 Hive的安装 8.1.1 下载安装文件 访问Hive官网(http://www.apache.org/dyn/closer.cgi/hive/)下载安装文件apache-hive-3.1.2-bin.tar.gz 下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的…...
BERT 详解
BERT简介 BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种预训练语言模型。BERT 在自然语言处理(NLP)领域取得了重大突破,因为它能够有效地捕捉文本的上下文信息&am…...
使用 MySQL 的 REPLACE() 函数轻松替换表中字段
前言 在数据库操作中,经常需要对存储的数据进行一些处理和修改,替换字段中的部分信息。MySQL 提供了多种字符串函数来帮助开发者完成这些任务。其中一个非常实用的函数就是 REPLACE()。 REPLACE() 函数简介 REPLACE() 函数用于在字符串中查找指定的子…...
Http 响应协议
HTTP的响应协议 响应数据格式 响应行 响应数据的第一行,包括协议、状态码、描述 响应头 从响应数据格式的第二行开始,也是以key:value的格式 响应体 和响应头之间有一个空行,是响应数据格式的最后一部分,用于存放响应的数据 常见响…...
TCP/IP 协议:网络世界的基石(2/10)
一、引言 在当今数字化时代,互联网已经成为人们生活中不可或缺的一部分。而在互联网的背后,TCP/IP 协议扮演着至关重要的角色,堪称互联网的基石。 TCP/IP 协议是一组用于数据通信的协议集合,它的名字来源于其中最重要的两个协议…...
Lua--1.基础知识
Lua基础知识 变量简单的4种变量类型复杂的4种变量类型type函数 字符串操作长度获取--#多行打印字符串拼接别的类型转字符串-- tostring()字符串提供的公共方法 运算符算术运算符-- - * / % ^条件运算符-- > < > < ~(不等于 是 ~)逻辑运算符-- and or not位运算、…...
【GPT】力量训练的底层原理?
详细解读力量训练的每一个底层原理 力量训练之所以有效,是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析,并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力(Stress):指训练带来的负…...
各种排序算法
前置知识 排序: 按照递增或者递减的顺序把数据排列好 稳定性: 值相等的元素在排序之后前后顺序是否发生了改变 内部排序: 数据放在内存上 外部排序: 数据放在磁盘上 内部排序 基于比较的排序 几大排序算法 1. 堆排序 特点: 思想: 1. 创建大根堆,把所有元素放在大根堆里…...
源码解读笔记:协程的 ViewModel.viewModelScope和LifecycleOwner.lifecycleScope
分析下ViewModel.viewModelScope public val ViewModel.viewModelScope: CoroutineScopeget() {val scope: CoroutineScope? this.getTag(JOB_KEY)if (scope ! null) {return scope}return setTagIfAbsent(JOB_KEY,CloseableCoroutineScope(SupervisorJob() Dispatchers.Ma…...
11.27周三F34-Day8打卡
文章目录 1. 学习让我感觉很棒。(什么关系?动作 or 描述?主语部分是?)解析答案:【解析答案分析】【对比分析】【拓展内容】2. 她忽然想起来钥匙放另一个包里了。解析答案:【拓展内容】3. 她来不来都没关系。(该由什么引导?这句话又属于什么关系,动作 or 描述?)解析答案…...
XG(S)-PON原理
前言 近年来,随着全球范围内接入市场的飞快发展以及全业务运营的快速开展,已有的PON技术标准在带宽需求、业务支撑能力以及接入节点设备和配套设备的性能提升等方面都面临新的升级需求XG(S)-PON(10G GPON)是在已有GPON技术标准上演进的增强下一代GPON技…...
C语言实例之9斐波那契数列实现
1. 斐波那契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多・斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”。 它的特点是从第三…...
YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
目录 1 前言2 YOLO在不同领域的应用3 物体检测指标和NMS3.1 mAP和IOU3.2 mAP计算流程3.2.1 VOC 数据集3.2.2 微软 COCO 数据集 3.3 NMS 1 前言 最近在做目标检测模型相关的优化,重新看了一些新的论文,发现了几篇写得比较好的YOLO系列论文综述࿰…...
数据结构--Map和Set
目录 一.二叉搜索树1.1 概念1.2 二叉搜索树的简单实现 二.Map2.1 概念2.2 Map常用方法2.3 Map使用注意点2.4 TreeMap和HashMap的区别2.5 HashMap底层知识点 三.Set3.1 概念3.2 Set常用方法3.3 Set使用注意点3.4 TreeSet与HashSet的区别 四.哈希表4.1 概念4.2 哈希冲突与避免4.3…...
计算机操作系统——进程控制(Linux)
进程控制 进程创建fork()函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出(Exit)由于信号终止非…...
【前端】ES6基础
1.开发工具 vscode地址 :https://code.visualstudio.com/download, 下载对应系统的版本windows一般都是64位的 安装可以自选目录,也可以使用默认目录 插件: 输入 Chinese,中文插件 安装: open in browser,直接右键文件…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
