当前位置: 首页 > news >正文

Python(三)——列表

文章目录

  • 创建列表
  • 访问下标
  • 遍历列表元素
  • 新增元素
  • 查找元素
  • 删除元素
  • 连接列表
  • 切片操作

创建列表

创建列表主要有两种方式

  • [ ]表示一个空的列表
a = []
print(type(a))  # <class 'list'>
print(a)        # []
  • 通过list()的方式来创建一个空列表
a = list()
print(type(a))  # <class 'list'>
print(a)        # []
  • 设置初始值, 可以直接写在[ ] 当中
alist = [1, 2, 3, 4]
print(alist) # [1, 2, 3, 4, 5]
  • 与C++、Java不同的是,Python中可以存放不同类型的数据
alist = [1, 'hello', True]
print(alist) # [1, 'hello', True]

访问下标

  • 可以通过下标访问操作符[ ]来获取到列表中的任意元素
alist = [1, 2, 3, 4]
print(alist[2]) # 3
  • 通过下标还能修改元素的值
alist = [1, 2, 3, 4]
alist[2] = 100
print(alist) # [1, 2, 100, 4]
  • 下标超出列表的有效范围, 会抛出异常
alist = [1, 2, 3, 4]
print(alist[100]) # IndexError: list index out of range```
  • 下标可以取负数. 表示 “倒数第几个元素”

在这里插入图片描述

alist = [1, 2, 3, 4]
print(alist[3]) # 4
print(alist[-1]) # 4

遍历列表元素

  • 使用 for 循环
alist = [1, 2, 3, 4]
for elem in alist:print(elem)
  • 使用 for 按照范围生成下标, 按下标访问
alist = [1, 2, 3, 4]
for i in range(0, len(alist)):print(alist[i])
  • 还可以使用 while 循环. 手动控制下标的变化
alist = [1, 2, 3, 4]
i = 0
while i < len(alist):print(alist[i])i += 1

新增元素

  • 使用 ``append```方法,尾插一个元素

这里同样可以追加不同类型的数据

alist = [1, 2, 3, 4]
alist.append('cxy') 
print(alist) # [1, 2, 3, 4, 'cxy']
  • 使用insert 方法, 向任意位置插入一个元素

其中index为要插入的位置,其以及后面的数据向后移动

alist = [1, 2, 3, 4]
alist.insert(1, 'cxy')
print(alist) # [1, 'cxy', 2, 3, 4]

查找元素

  • 使用in操作符, 判定元素是否在列表中存在. 返回值是布尔类型
alist = [1, 2, 3, 4]
print(2 in alist) # True
print(10 in alist) # False
  • 使用index 方法, 查找元素在列表中的下标. 返回值是一个整数(下标). 如果元素不存在, 则会抛出异常
alist = [1, 2, 3, 4]
print(alist.index(2)) # 1
print(alist.index(10)) # ValueError: 10 is not in list

删除元素

  • 使用pop方法进行尾删除
alist = [1, 2, 3, 4]
alist.pop()
print(alist) # [1, 2, 3]
  • 若给``pop```传参,即按照其下标删除
alist = [1, 2, 3, 4]
alist.pop(2)
print(alist) # [1, 2, 4]
  • 使用 remove方法, 按值删除
alist = [1, 2, 3, 4]
alist.remove(2)
print(alist) # [1, 3, 4] 

连接列表

  • 使用 + 将两个列表拼接
    +号连接的是一个新链表,不回影响a、b链表
alist = [1, 2, 3, 4]
blist = [5, 6, 7]
print(alist + blist) # [1, 2, 3, 4, 5, 6, 7]
  • 使用extend 方法, 相当于把一个列表拼接到另一个列表的后面

a.extend(b) , 是把 b 中的内容拼接到 a 的末尾. 不会修改 b, 但是会修改 a.

alist = [1, 2, 3, 4]
blist = [5, 6, 7]
alist.extend(blist)
print(alist) # [1, 2, 3, 4, 5, 6, 7] a被修改
print(blist) # [5, 6, 7] b未被修改

切片操作

通过下标操作是一次取出里面第一个元素
通过切片, 则是一次取出一组连续的元素, 相当于得到一个 子列表

  • 使用[ : ] 的方式进行切片操作
alist = [1, 2, 3, 4]
print(alist[1:3]) # [2, 3]

alist[1:3]中的1:3 表示的是 [1, 3) 这样的由下标构成的前闭后开区间

  • 切片操作中可以省略前后边界
alist = [1, 2, 3, 4]
print(alist[1:]) # 省略后边界, 表示获取到列表末尾  [2, 3, 4]
print(alist[:-1]) # 省略前边界, 表示从列表开头获取  [1, 2, 3]
print(alist[:]) # 省略两个边界, 表示获取到整个列表 [1, 2, 3, 4]
  • 切片操作还可以指定 “步长” , 也就是 “每访问一个元素后, 下标自增几步”

步长还可以是负数, 此时是从后往前进行取元素. 表示 "每访问一个元素之后, 下标自减几步"

alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(alist[::1]) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(alist[::2]) # [1, 3, 5, 7, 9]
print(alist[::3]) # [1, 4, 7, 10]
print(alist[::5]) # [1, 6]
  • 切片时下标越界问题

如果切片时填写的下标超出了有效范围,运行程序后不会抛异常,而是尽可能把符合要求的元素提取出来

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[1:100])  # [2, 3, 4, 5, 6, 7, 8, 9, 0]

相关文章:

Python(三)——列表

文章目录 创建列表访问下标遍历列表元素新增元素查找元素删除元素连接列表切片操作 创建列表 创建列表主要有两种方式 [ ]表示一个空的列表 a [] print(type(a)) # <class list> print(a) # []通过list()的方式来创建一个空列表 a list() print(type(a)) # …...

MySQL--三大范式(超详解)

目录 一、前言二、三大范式2.1概念2.2第一范式&#xff08;1NF&#xff09;2.3第二范式&#xff08;2NF&#xff09;2.3第三范式&#xff08;3NF&#xff09; 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进…...

追梦无Bug的软件世界

追梦无Bug的软件世界&#xff1a;测试人员的视角与探索 我有一个梦想&#xff0c;今天我们共同承载着一个愿景&#xff1a;创造一个没有Bug的软件世界。 我梦想有一天&#xff0c;用户将享受到完全无Bug的软件体验&#xff0c;用户不再因为软件中的Bug而感到困扰和沮丧。 我梦…...

在C#中使用Redis实现高效消息队列

使用Redis实现C#中的消息队列 Redis是一种开源的内存数据结构存储系统,因其高性能和灵活性被广泛用于缓存、数据库和消息队列等场景。本文将详细介绍如何在C#中使用Redis实现一个简单的消息队列,涵盖环境准备、代码实现和使用示例。 1. 环境准备 1.1 安装Redis 首先,确保…...

微服务JMeter解析部署使用全流程

目录 1、介绍 2、下载 3、运行 4、设置简体中文版 5、开始测试 1、添加线程组 2、添加监听器 3、添加请求 先.测试userController里的查询方法 6、查看结果 1、查看结果树 2、汇总报告 3、聚合报告 7、JMeter报错 1、介绍 Apache JMeter 是 Apache 组织基于 Java…...

Python 从入门到实战32(数据库MySQL)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了数据库编程接口操作的相关知识。今天我们将学习…...

hrnet训练的pt模型结合目标检测进行关键点识别的更准确前向推理

本篇在将图像输入hrnet识别之前先进行目标检测来确定识别的位置&#xff0c;让识别更加精准。 本段代码设置了一个区域框BOX&#xff0c;让人走入区域内才开始检测&#xff0c;适用于考核等场景&#xff0c;也可以直接去掉BOX也是一样的效果。若画面背景中有多个行人&#xff0…...

Leetcode 3306. Count of Substrings Containing Every Vowel and K Consonants II

Leetcode 3306. Count of Substrings Containing Every Vowel and K Consonants II 1. 解题思路2. 代码实现 题目链接&#xff1a;3306. Count of Substrings Containing Every Vowel and K Consonants II 1. 解题思路 这一题的话思路上就是一个滑动窗口&#xff0c;考察没一…...

算法笔记(五)——分治

文章目录 算法笔记&#xff08;五&#xff09;——分治快排颜色分类排序数组数组中的第K个最大元素库存管理 III 归并排序数组交易逆序对的总数计算右侧小于当前元素的个数翻转对 算法笔记&#xff08;五&#xff09;——分治 分治算法字面上的解释是“分而治之”&#xff0c;就…...

多级侧边菜单(递归)

需要编写两个文件 aside-menu.vue 和 menu-item.vue menu-item.vue <script setup> defineOptions({name: MenuItem}) defineProps({menuList: Array}) </script><template><template v-for"menu of menuList"><!-- 如果当前有子菜单&a…...

JavaScript break与continue语句

break语句和continue语句都具有跳转作用&#xff0c;可以让代码不按既有的顺序执行。 break break语句用于跳出代码块或循环 for(i0;i<100;i){if(i5){break;}console.log(i);} continue continue语句用于应即终止本轮循环,返回循环结构的头部&#xff0c;开始下一轮循环。…...

算法【从递归入手一维动态规划】

动态规划&#xff1a;用空间代替重复计算&#xff0c;包含一整套原理和技巧的总和。后面会有非常多的文章介绍动态规划。 有些递归在展开计算时&#xff0c;总是重复调用同一个子问题的解&#xff0c;这种重复调用的递归变成动态规划很有收益。如果每次展开都是不同的解&#…...

Linux中的进程间通信之共享内存

共享内存 共享内存示意图 共享内存数据结构 struct shmid_ds {struct ipc_perm shm_perm; /* operation perms */int shm_segsz; /* size of segment (bytes) */__kernel_time_t shm_atime; /* last attach time */__kernel_time_t shm_dtime; /* last detach time */__kerne…...

第18周 3-过滤器

过滤器&#xff08;Filter&#xff09;概念总结 什么是过滤器 过滤器&#xff08;Filter&#xff09;是Java Web应用中用于统一拦截和处理请求的组件&#xff0c;类似于现实生活中的空气净化器或安检。它通过对请求进行前置处理&#xff0c;确保请求符合特定要求。 过滤器的…...

Linux之进程概念

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;Linux专栏 创作时间 &#xff1a;2024年9月28日 基本概念&#xff1a; 进程说白了其实就是一个程序的执行实例&#xff0c;正在执行的程序。 在内核层面来说&#xff0c;就是一个担当分配资源&#xff08;CPU时间…...

小程序-使用npm包

目录 Vant Weapp 安装 Vant 组件库 使用 Vant 组件 定制全局主题样式 API Promise化 1. 基于回调函数的异步 API 的缺点 2. 什么是 API Promise 化 3. 实现 API Promise 化 4.调用 Promise 化之后的异步 API 小程序对 npm 的支持与限制 目前&#xff0c;小程序中已经…...

【springboot】整合沙箱支付

目录 1. 配置沙箱应用环境2. 配置springboot项目1. 引入依赖2. 配置文件注册下载ngrok 3. 创建支付宝支付服务类4. 支付界面模板5. 控制类实现支付6. 测试 1. 配置沙箱应用环境 使用支付宝账号登录到开放平台控制台。 使用支付宝登录后&#xff0c;看到以下页面&#xff0c;下…...

技术速递|Python in Visual Studio Code 2024年9月发布

排版&#xff1a;Alan Wang 我们很高兴地宣布将于 2024 年 9 月发布适用于 Visual Studio Code 的 Python 和 Jupyter 扩展&#xff01; 此版本包括以下公告&#xff1a; Django 单元测试支持使用 Pylance 从 inlay 提示转到定义 如果您有兴趣&#xff0c;可以在我们的 Pyth…...

数据结构-3.5.队列的顺序实现

一.队列的顺序实现&#xff0c;初始化操作以及判断队列是否为空&#xff1a; 1.图解&#xff1a; 2.代码&#xff1a; #include<stdio.h> #define MaxSize 10 //定义一个队列最多存储的元素个数 ​ typedef struct {int data[MaxSize]; //用静态数组存放队列元素int f…...

preconnect 预解析

preconnect 是一种浏览器优化技术&#xff0c;用于告诉浏览器提前与指定的域名建立连接&#xff0c;包括DNS解析、TCP握手和TLS协商&#xff08;如果适用&#xff09;。这样做可以减少客户端在请求资源时所需的往返时间&#xff08;RTT&#xff09;&#xff0c;从而提高页面加载…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

性能优化中,多面体模型基本原理

1&#xff09;多面体编译技术是一种基于多面体模型的程序分析和优化技术&#xff0c;它将程序 中的语句实例、访问关系、依赖关系和调度等信息映射到多维空间中的几何对 象&#xff0c;通过对这些几何对象进行几何操作和线性代数计算来进行程序的分析和优 化。 其中&#xff0…...

VUE3 ref 和 useTemplateRef

使用ref来绑定和获取 页面 <headerNav ref"headerNavRef"></headerNav><div click"showRef" ref"buttonRef">refbutton</div>使用ref方法const后面的命名需要跟页面的ref值一样 const buttonRef ref(buttonRef) cons…...

RFID推动新能源汽车零部件生产系统管理应用案例

RFID推动新能源汽车零部件生产系统管理应用案例 一、项目背景 新能源汽车零部件场景 在新能源汽车零部件生产领域&#xff0c;电子冷却水泵等关键部件的装配溯源需求日益增长。传统 RFID 溯源方案采用 “网关 RFID 读写头” 模式&#xff0c;存在单点位单独头溯源、网关布线…...