Python基础学习笔记(六)——列表
目录
- 一、一维列表的介绍和创建
- 二、序列的基本操作
- 1. 索引的查询与返回
- 2. 切片
- 3. 序列加
- 三、元素的增删改
- 1. 添加元素
- 2. 删除元素
- 3. 更改元素
- 四、排序
- 五、列表生成式
一、一维列表的介绍和创建
列表(list),也称数组,是一种有序、可变、允许重复元素的组合数据结构,属于可变序列,由方括号[]内、用逗号分隔的一组元素组成。
列表可存储多个元素以方便对一组数据整体操作。不同的列表的内存地址互不相同,即id独立。
列表有两种创建方式:直接将目的列表赋予变量,称为赋值创建;使用list()函数将任意组合转化为列表,称为引用创建。
下文的列表均指一维列表。
# 空列表
lst = []
lst = list()# 赋值创建
lst = [1, 2, 3]# 引用创建(字典转列表):转化前后元素不变
lst = list({'1': 'a', '2': 'b', '3': 'c', })print(lst, type(lst), id(lst))
[1, 2, 3] <class 'list'> 1937556730752
列表的元素可以是任意数据类型的对象的引用,也就是一维指针。所以列表实际上是一种二维指针,用于存储一维指针。
在Python中,通常不采用这种描述,因为Python不支持指针的直接操作。但是,列表的索引可以模拟二级指针。
二、序列的基本操作
以下操作适用于所有序列,即列表、元组和字符串,下文仅以列表为例。
1. 索引的查询与返回
索引描述了序列中的元素的位置,是用于访问元素的操作方法,分为正数索引和负数索引。
序列中的元素从左到右的正数索引依次为0, 1, 2, ... , n,从右到左的负数索引依次为-1, -2, ... , -n。
可以通过查询索引获取对应元素的值。
lst = [1, 2, 3]
print(lst[0], lst[-3])
1 1
也可以使用index()函数,通过元素的值返回对应的正数索引。若列表存在相同的元素,只返回最小的正数索引;若列表不存在对应的元素,报错ValueError.
index(arg1, arg2=0, arg3=len(list))可限定索引区间:默认步长为1,开始索引为0,结束索引为列表长度(元素个数),区间形式与range函数相似,即左闭右开。
若arg3未传递,传递了负数,或者传递了小于arg2的值,则参数arg3无效,函数功能为:返回索引为arg2上的指定元素的正数索引。一般不会用到该功能。特别的,若arg2=arg3,一定会报错,因为索引区间为空。
lst = ['1', '2', '3', '4', '1']
# index(element):返回指定元素的索引
print(lst.index('1'))
# index(element, index):返回限定位置上的指定元素的索引
print(lst.index('1', 4))
# index(element, start, stop):返回限定位置区间上的指定元素的索引
print(lst.index('1', 1, 5))
0
4
4
2. 切片
切片是指获取序列中的子序列,是访问序列中的多个元素的一种方式,其结果是原序列片段的拷贝。
list[start=0:stop=-1:step=1],就是将整数序列range(start,stop,step)作为从原序列所取元素的索引,获取并拷贝这些元素,然后返回一个具有新id的子序列。
其参数默认值与range类似。特别的,若start或stop为负数索引,则先转化为正数索引,再遵循range对应。
lst = [1, 2, 3, 4, 5, 6]
print(lst[1:5:2], lst[1:-1:2])
print(id(lst), id(lst[1:5:2]))# 第一个冒号不能省略,第二个可以省略
print(lst[1:5], lst[1::2], lst[:5:2])
print(lst[1:], lst[:5], lst[::2])
[2, 4] [2, 4]
1383891593536 1383891563392[2, 3, 4, 5] [2, 4, 6] [1, 3, 5]
[2, 3, 4, 5, 6] [1, 2, 3, 4, 5] [1, 3, 5]
3. 序列加
同类型的序列之间可以进行序列加运算+,即:将后一个序列的元素依次添加到前一个序列里。
lst = list([1, 2])
print(lst + lst)
[1, 2, 1, 2]
三、元素的增删改
1. 添加元素
append(element)函数:在列表末尾添加一个元素。extend(iterable)函数:在列表末尾依次添加一个组合内的元素。insert(index, element)函数:在指定索引插入一个元素,后续元素索引+1.
上述的函数没有返回值,也就是说它们的操作是在原列表上进行的,但列表的id仍会改变。
序列加赋值运算+=可以替代extend()函数,但列表没有被分配-=运算。
lst = list([1, 2])
# 不能将组合内的元素加入列表
lst.append([3])
print(lst)# 集合是无序组合,添加次序遵循特殊的哈希映射
lst.extend({5, 4})
print(lst)# 也可以简化为赋值运算
lst += (7, 8) # 元组,一种序列,属于组合类型
print(lst)# 负数索引视为正数索引输入
lst.insert(-7, '0')
print(lst)
[1, 2, [3]]
[1, 2, [3], 4, 5]
[1, 2, [3], 4, 5, 7, 8]
['0', 1, 2, [3], 4, 5, 7, 8]
2. 删除元素
remove(element)函数:删除一个指定元素,若存在重复元素,取最小正数索引。pop(index=-1)函数:删除一个指定索引上的元素,参数默认值为-1.clear()函数:清空列表中的所有元素。del语句:删除一个指定索引上的元素,也可以删除指定切片范围内的元素,甚至删除列表本身。
lst = list([1, 2, 3, 4, 5])
lst.remove(5)
print(lst)lst.pop(0)
print(lst)
lst.pop()
print(lst)lst.clear()
print(lst)lst = list([1, 2, 3, 4, 5])
del lst[0]
print(lst)del lst[1:]
print(lst)del lst
print(lst)
[1, 2, 3, 4]
[2, 3, 4]
[2, 3]
[][2, 3, 4, 5]
[2]
NameError: name 'lst' is not defined.
3. 更改元素
列表元素的更改主要通过索引查询和切片替换,它们的功能与上述的添加和删除有所重叠。
索引查询不仅能获取指定索引上的元素的值,也可以对它进行修改;切片替换可将切片内的元素依次替换为一个组合内的元素。当切片步长为1时,组合的元素数量不受限制;否则,切片的元素个数须等于组合的元素个数。
lst = list([1, 2, 3, 4, 5])
# 逐个修改
lst[0] = 0
print(lst)# 批量修改
lst[1:3] = [10, 20, 30, 40]
print(lst)# 批量删除
lst[1:5] = []
print(lst)# 跳跃替换
lst[::2] = 'ab'
print(lst)
[0, 2, 3, 4, 5]
[0, 10, 20, 30, 40, 4, 5]
[0, 4, 5]
['a', 4, 'b']
四、排序
sort(reverse=False)是一个无返回值函数,参数默认值为升序排列,可以对列表内的元素进行排序。对于基本数据类型的元素,数值类型可以互相排序,字符串不能与数值排序。
sorted(reverse=False)与前者的区别在于,它可以对任意组合内的元素进行排序,并返回一个排序后的列表。
对于值的大小相同,但类型不同的数值,遵循int < float < bool。
字符串的比较将在后续篇章说明,排序算法则在进阶篇中展开。
lst = [0, 1, 1.0, True, 2]
# 升序排列
lst.sort()
print(lst)# 降序排列
print(sorted(lst, reverse=True))
[0, 1, 1.0, True, 2]
[2, 1, 1.0, True, 0]
五、列表生成式
生成式是for遍历的缩简语句,用于快速生成组合,格式为:[运算式 for 变量 in 可迭代对象],即:遍历可迭代对象,将其每个元素经运算后的结果加入所生成的组合中。
print([i**2 for i in range(5)])
[0, 1, 4, 9, 16]
相关文章:
Python基础学习笔记(六)——列表
目录 一、一维列表的介绍和创建二、序列的基本操作1. 索引的查询与返回2. 切片3. 序列加 三、元素的增删改1. 添加元素2. 删除元素3. 更改元素 四、排序五、列表生成式 一、一维列表的介绍和创建 列表(list),也称数组,是一种有序、…...
帝国CMS跳过选择会员类型直接注册方法
国CMS因允许多用户组注册,所以在注册页面会有一个选择注册用户组的界面,即使网站只用了一个用户组也会出现。 如果想去掉这个页面,直接进入注册页面,那么可按以下办法修改 打开 e/class/user.php 文件 查找: $chan…...
【python】python tkinter 计算器GUI版本(模仿windows计算器 源码)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...
黑马es数据同步mq解决方案
方式一:同步调用 优点:实现简单,粗暴 缺点:业务耦合度高 方式二:异步通知 优点:低耦含,实现难度一般 缺点:依赖mq的可靠性 方式三:监听binlog 优点:完全解除服务间耦合 缺点:开启binlog增加数据库负担、实现复杂度高 利用MQ实现mysql与elastics…...
通过LLM多轮对话生成单元测试用例
通过LLM多轮对话生成单元测试用例 代码 在采用 随机生成pytorch算子测试序列且保证算子参数合法 这种方法之前,曾通过本文的方法生成算子组合测试用例。目前所测LLM生成的代码均会出现BUG,且多次交互后仍不能解决.也许随着LLM的更新,这个问题会得到解决.记录备用。 代码 impo…...
[Redis]String类型
基本命令 set命令 将 string 类型的 value 设置到 key 中。如果 key 之前存在,则覆盖,无论原来的数据类型是什么。之前关于此 key 的 TTL 也全部失效。 set key value [expiration EX seconds|PX milliseconds] [NX|XX] 选项[EX|PX] EX seconds⸺使用…...
Ai速递5.29
全球AI新闻速递 1.摩尔线程与无问芯穹合作,实现国产 GPU 端到端 AI 大模型实训。 2.宝马工厂:机器狗上岗,可“嗅探”故障隐患。 3.ChatGPT:macOS 开始公测。 4.Stability AI:推出Stable Assistant,可用S…...
Android9.0 MTK平台如何增加一个系统应用
在安卓定制化开发过程中,难免遇到要把自己的app预置到系统中,作为系统应用使用,其实方法有很多,过程很简单,今天分享一下我是怎么做的,共总分两步: 第一步:要找到当前系统应用apk存…...
LabVIEW中实现Trio控制器的以太网通讯
在LabVIEW中实现与Trio控制器的以太网通讯,可以通过使用TCP/IP协议来完成。这种方法包括配置Trio控制器的网络设置、使用LabVIEW中的TCP/IP函数库进行数据传输和接收,以及处理通讯中的错误和数据解析。本文将详细说明实现步骤,包括配置、编程…...
C/C++运行时库与 UCRT 通用运行时库:全面总结与问题实例剖析
推荐一个AI网站,免费使用豆包AI模型,快去白嫖👉海鲸AI 1. 概述 在开发C/C应用程序时,运行时库(Runtime Library)是不可或缺的一部分。它们提供了一系列函数和功能,使得开发者能够更方便地进行编…...
【Python001】python批量下载、插入与读取Oracle中图片数据(已更新)
1.熟悉、梳理、总结数据分析实战中的python、oracle研发知识体系 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 文章目录 1.背景说明2.环境搭建2.1 参考链接2.2 `oracle`查询测试代码3.数据请求与插入3.1 `Oracle`建表语句3.2 `Python`代码实现3.3 效果示例4.问题链…...
流形学习(Manifold Learning)
基本概念 Manifold Learning(流形学习)是一种机器学习和数据分析的方法,它专注于从高维数据中发现低维的非线性结构。流形学习的基本假设是,尽管数据可能在高维空间中呈现,但它们实际上分布在一个低维的流形上。这个流…...
区块链技术和应用
文章目录 前言 一、区块链是什么? 二、区块链核心数据结构 2.1 交易 2.2 区块 三、交易 3.1 交易的生命周期 3.2 节点类型 3.3 分布式系统 3.4 节点数据库 3.5 智能合约 3.6 多个记账节点-去中心化 3.7 双花问题 3.8 共识算法 3.8.1 POW工作量证明 总结 前言 学习长…...
Docker拉取镜像报错:x509: certificate has expired or is not yet v..
太久没有使用docker进行镜像拉取,今天使用docker-compose拉取mongo发现报错(如下图): 报错信息翻译:证书已过期或尚未有效。 解决办法: 1.一般都是证书问题或者系统时间问题导致,可以先执行 da…...
猫狗分类识别模型建立②模型建立
一、导入依赖库 pip install opencv-python pip install numpy pip install tensorflow pip install keras 二、模型建立 pip install opencv-python pip install numpy pip install tensorflow pip install kerasimport os import xml.etree.ElementTree as ETimpor…...
React Native 之 ToastAndroid(提示语)(二十一)
ToastAndroid 是 React Native 提供的一个特定于 Android 平台的 API,用于显示简单的消息提示(Toast)。 两个方法: 1. ToastAndroid.show(message, duration, gravity) message: 要显示的文本消息。duration: Toast 的持续时间&…...
合约之间调用-如何实现函数静态调用?
合约之间的函数调用 EOA,external owned account,外部账号,例如metamask调用最终总是由EOA发起的合约之间的调用使得一次完整的调用成为一个调用链条 合约间调用过程 调用者须持有被调用合约的地址得到被调用合约的信息将地址重载为被调用合…...
【5.基础知识和程序编译及调试】
一、GCC概述:是GUN推出的多平台编译器,可将C/C源程序编译成可执行文件。编译流程分为以下四个步骤: 1、预处理 2、编译 3、汇编 4、链接 注:编译器根据程序的扩展名来分辨编写源程序所用的语言。根据不同的后缀名对他们进行相…...
微信小程序(路由传参)
微信小程序的路由系统和其他Web应用类似,主要通过页面路径和URL参数进行页面导航和数据传递。下面详细介绍微信小程序路由的基本使用方法和相关技巧。 1. 基本页面导航 1.1 配置页面路径 在微信小程序的 app.json 文件中,需要配置小程序的页面路径。这…...
电脑显示不出网络
你的电脑是否在开机后显示不出网络,或者有网络消失的现象?今天和大家分享我学到的一个办法,希望对大家有用。 分析出现这类现象的原因:可能是电脑网卡松动了,电脑中存在静电流。 解决办法:先将电脑关机&am…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
