四、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,直接右键文件…...
【排序算法 python实现】
排序算法 python实现 / 默写 # 汉诺塔 import copy import randomdef hanuo(n, a, b, c):if n 1:print(f{a} --> {c})returnhanuo(n - 1, a, c, b)print(f{a} --> {c})hanuo(n - 1, b, a, c)hanuo(3, A, B, C)# 冒泡排序 def bubble_sort(arr):n len(arr)for i in ran…...
Java图书管理系统(简易保姆级)
前面学习了这么多知识,为了巩固之前的知识,我们就要写一个图书管理系统来帮助大家复习,让大家的知识融会贯通~~~ 话不多说,直接开始今天的内容~ 首先呢,我们要有一个大体的思路: 实现效果思路有两种情况&a…...
嵌入式硬件设计:从概念到实现的全流程
嵌入式硬件设计是现代电子技术中一个至关重要的领域,涉及从硬件架构设计到硬件调试的各个方面。它为我们日常生活中的各类智能设备、家电、工业控制系统等提供了强大的支持。本文将介绍嵌入式硬件设计的基本流程、关键技术、常用工具以及常见的挑战和解决方案&#…...
第 4 章 Java 并发包中原子操作类原理剖析
原子变量操作类 AtomicLong 是原子性递增或者递减类,其内部使用 Unsafe 来实现,AtomicLong类也是在 rt.jar 包下面的,AtomicLong 类就是通过 BootStarp 类加载器进行加载的。这里的原子操作类都使用 CAS 非阻塞算法 private static final lon…...
从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中
文章目录 前言构建一个 hello world web 应用项目结构项目核心文件启动项目 检查项目是否构建成功 容器化我们的应用编写 Dockerfile构建 docker 镜像推送 docker 镜像仓库 使用 labs.play-with-k8s.com 构建 Kubernetes 集群并部署应用构建 Kubernetes 集群环境编写部署文件 总…...
政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例
目录 Cusor的主要特点 Cusor实操 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! Cursor 是 Visual Studio Code 的一个分支。这使我们能够…...
CentOS 7 安装部署 KVM
1.关闭虚拟机 打开相关选项 打开虚拟机centos7 连接xshell 测试网络,现在就是没问题的,因为我们要使用网络源 安装 GNOME 桌面环境 安装KVM 模块 安装KVM 调试工具 构建虚拟机的命令行工具 qemu 组件,创建磁盘、启动虚拟机等 输入这条命令,…...
ArcGIS 10.2软件安装包下载及安装教程!
今日资源:ArcGIS 适用系统:WINDOWS 软件介绍:ArcGIS是一款专业的电子地图信息编辑和开发软件,提供一种快速并且使用简单的方式浏览地理信息,无论是2D还是3D的信息。软件内置多种编辑工具,可以轻松的完成地…...
一个专为云原生环境设计的高性能分布式文件系统
大家好,今天给大家分享一款开源创新的分布式 POSIX 文件系统JuiceFS,旨在解决海量云存储与各类应用平台(如大数据、机器学习、人工智能等)之间高效对接的问题。 项目介绍 JuiceFS 是一款面向云原生设计的高性能分布式文件系统&am…...
基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码
文章目录 基于深度学习算法的花卉分类识别系统一、项目摘要二、项目运行效果三、项目文件介绍四、项目环境配置1、项目环境库2、环境配置视频教程 五、项目系统架构六、项目构建流程1、数据集2、算法网络Mobilenet3、网络模型训练4、训练好的模型预测5、UI界面设计-pyqt56、项目…...
天津市建筑信息网/太原百度快速优化排名
正题第四题:[NOI2002]银河英雄传说这道题看上去很简单,做起来却对ij之间飞船的数量给搞混了。那么我们很容易就可以知道,要求ij之间的飞船个数,只要我们知道j前面有多少飞船,i前面有多少飞船即可,直接用abs…...
做soho的网站/国际新闻热点事件
在日常办公室中如何添加本地打印机,打印机是必不可少的设备,但是有时将打印机连接到计算机时会遇到很多问题. 连接本地打印机对于我们的工作效率非常重要. 让我们看一下如何添加打印机.无法将打印机添加到win10系统,如下所示:添加打印机时&am…...
wordpress增加用户/微信小程序开发教程
大家好,我是小弗。去年分享了《第一本图解网络PDF》,应该是帮助了一些读者,因为有收到读者的好评,甚至是打赏,更不可思议的是,还引起了出版社的注意,这是小弗万万没想到的。获得支持和认可&…...
做列表的网站/google网站
文章来源:http://thw.568idc.com/blog/default.asp?id1068转载于:https://www.cnblogs.com/thw/archive/2006/09/29/518613.html...
文明网网站建设/定制开发公司
目录TLM1.0验证平台内部的通信TLM的定义UVM中的PORT与EXPORTUVM中各种端口的互连PORT与EXPORT的连接*UVM中的IMP*PORT与IMP的连接*EXPORT与IMP的连接*PORT与PORT的连接*EXPORT与EXPORT的连接TLM1.0 验证平台内部的通信 如果要在两个uvm_component之间通信,如一个mo…...
wordpress ucenter插件/石家庄seo按天扣费
据钱江晚报实名认证微博消息:本报记者王小湛从温州乐清人大主任赵乐强处获悉,著名国学大师南怀瑾先生已于昨天在苏州太湖大学堂去世,享年95岁。本报记者随后将发布关于南怀瑾先生的遗嘱及其善后事宜。大师认为人生的最高境界是佛为心…...