Python 列表的高级索引技巧
列表是 Python 中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素。本文将带你深入了解 Python 列表的高级索引技巧,让你在处理数据时更加得心应手。
1.基本索引
首先,我们来看看如何使用基本索引来访问列表中的元素。
# 创建一个简单的列表
fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry']# 访问第一个元素
print(fruits[0]) # 输出: apple# 访问最后一个元素
print(fruits[-1]) # 输出: elderberry# 访问第三个元素
print(fruits[2]) # 输出: cherry
2.切片
切片是 Python 列表中非常强大的功能,可以用来获取列表的一部分。
# 获取前三个元素
print(fruits[:3]) # 输出: ['apple', 'banana', 'cherry']# 获取从第二个元素到第四个元素
print(fruits[1:4]) # 输出: ['banana', 'cherry', 'date']# 获取从第三个元素到最后一个元素
print(fruits[2:]) # 输出: ['cherry', 'date', 'elderberry']
3.负数索引切片
负数索引也可以用于切片,这在处理列表末尾的元素时非常有用。
# 获取最后两个元素
print(fruits[-2:]) # 输出: ['date', 'elderberry']# 获取从倒数第三个元素到倒数第一个元素
print(fruits[-3:-1]) # 输出: ['cherry', 'date']
4.步长
步长参数可以让你以指定的间隔来获取列表中的元素。
# 每隔一个元素获取一次
print(fruits[::2]) # 输出: ['apple', 'cherry', 'elderberry']# 从最后一个元素开始,每隔一个元素获取一次
print(fruits[::-2]) # 输出: ['elderberry', 'cherry', 'apple']
5.多维列表
多维列表是包含其他列表的列表,可以用来表示矩阵或其他复杂数据结构。
# 创建一个二维列表
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]# 访问第一行的第一个元素
print(matrix[0][0]) # 输出: 1# 访问第二行的所有元素
print(matrix[1]) # 输出: [4, 5, 6]# 访问所有行的第二个元素
print([row[1] for row in matrix]) # 输出: [2, 5, 8]
6.列表解析
列表解析是一种简洁的方式来创建新的列表,同时可以结合条件表达式来过滤元素。
# 创建一个新的列表,包含原列表中长度大于5的字符串
long_fruits = [fruit for fruit in fruits if len(fruit) > 5]
print(long_fruits) # 输出: ['banana', 'elderberry']# 创建一个新的列表,包含原列表中每个元素的长度
lengths = [len(fruit) for fruit in fruits]
print(lengths) # 输出: [5, 6, 6, 4, 10]
7.切片赋值
切片不仅可以用于获取列表的一部分,还可以用于修改列表的一部分。
# 修改前两个元素
fruits[:2] = ['orange', 'grape']
print(fruits) # 输出: ['orange', 'grape', 'cherry', 'date', 'elderberry']# 插入新元素
fruits[2:2] = ['kiwi', 'lemon']
print(fruits) # 输出: ['orange', 'grape', 'kiwi', 'lemon', 'cherry', 'date', 'elderberry']
8.删除元素
使用切片和del 语句可以方便地删除列表中的元素。
# 删除前两个元素
del fruits[:2]
print(fruits) # 输出: ['kiwi', 'lemon', 'cherry', 'date', 'elderberry']# 删除最后一个元素
del fruits[-1]
print(fruits) # 输出: ['kiwi', 'lemon', 'cherry', 'date']
9.反转列表
使用切片可以轻松地反转列表。
# 反转列表
reversed_fruits = fruits[::-1]
print(reversed_fruits) # 输出: ['date', 'cherry', 'lemon', 'kiwi']
10.实战案例:处理学生成绩
假设你有一个包含学生姓名和成绩的列表,你需要完成以下任务:1. 找出所有成绩大于等于90分的学生。2. 将所有学生的成绩按降序排列。3. 打印每个学生的姓名和成绩。
# 学生姓名和成绩列表
students = [('Alice', 85),('Bob', 92),('Charlie', 78),('David', 90),('Eve', 88)
]# 1. 找出所有成绩大于等于90分的学生
high_scores = [(name, score) for name, score in students if score >= 90]
print(high_scores) # 输出: [('Bob', 92), ('David', 90)]# 2. 将所有学生的成绩按降序排列
sorted_students = sorted(students, key=lambda x: x[1], reverse=True)
print(sorted_students) # 输出: [('Bob', 92), ('David', 90), ('Eve', 88), ('Alice', 85), ('Charlie', 78)]# 3. 打印每个学生的姓名和成绩
for name, score in sorted_students:print(f"{name}: {score}")
总结
本文介绍了 Python 列表的高级索引技巧,包括基本索引、切片、负数索引切片、步长、多维列表、列表解析、切片赋值、删除元素、反转列表等。通过这些技巧,你可以更高效地处理和操作列表数据。
相关文章:
Python 列表的高级索引技巧
列表是 Python 中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素。本文将带你深入了解 Python 列表的高级索引技巧,让你在处理数据时更加得心应手。 1.基本索引 首先,我们来看看如何使用基本索引来访…...
UE5.3 虚幻引擎 Windows插件开发打包(带源码插件打包、无源码插件打包)
0 引言 随着项目体量的增大,所有代码功能都放一起很难管理。所以有什么办法可以将大模块划分成一个个小模块吗。当然有,因为虚幻引擎本身就遇到过这个问题,他的解决办法就是使用插件的形式开发。 例如,一个团队开发了文件I/O模块插…...
RC充电电路仿真与分析
RC充电原理 下图是一个常见的RC充电电路:(假设R10K,C100nF) SW断开时,这个电路处于断路状态,C既没有充电也没有放电;SW闭合时,直流电源5V为电容C充电; 充电时电容两端…...
C++ 设计模式:观察者模式(Observer Pattern)
链接:C 设计模式 链接:C 设计模式 - 模板方法 链接:C 设计模式 - 策略模式 观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主…...
栈及栈的操作
栈及栈的操作 栈结构 栈是一种只能在一端进行插入或删除操作的数据结构。栈有两个基本的操作:入栈和出栈。 入栈:将一个新的元素放到栈顶。 出栈:从栈顶取出一个元素。栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。栈的操作规则:LIFO(Last…...
算法:切饼
对以下题目设计一个算法:切饼 假设:有一张很大很大的饼,给你一把足够长的刀。要求:每次在饼上切一刀。 问题:n刀,最多能切出多少块饼? n3 要解决这个问题,我们可以从数学归纳法的…...
C++ 设计模式:代理模式(Proxy Pattern)
链接:C 设计模式 链接:C 设计模式 - 门面模式 链接:C 设计模式 - 中介者 链接:C 设计模式 - 适配器 代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一种代理以控制(…...
JDK、JRE、JVM的区别
JDK(Java Development Kit)、JRE(Java Runtime Environment)和 JVM(Java Virtual Machine)是 Java 开发和运行环境的三个重要组成部分。 JDK 是 Java 开发工具包,它包含了编译器(ja…...
2021年福建公务员考试申论试题(县级卷)
2021年福建公务员考试申论试题(县级卷) 材料一 “把她的家粉刷一新。给独自生活的她更多支持。” 某公益平台上,为女孩小珊修缮房屋的公益计划得到不少爱心网友的支持。1元、10元、100元……不到一个月,爱心捐赠就超过了修缮…...
问题记录:[FATAL] [1735822984.951119148]: Group ‘manipulator‘ was not found.
前言:最近仿照UR5手眼标定的例程,在新的机械臂上进行手眼标定,还准备用easy_hand手眼标定包。将机器人功能包导入到工作空间后进行编译运行,启动launch文件: roslaunch easy_handeye eye_to_hand_CR7_calibration.lau…...
【大模型实战篇】Mac本地部署RAGFlow的踩坑史
1. 题外话 最近一篇文章还是在11月30日写的,好长时间没有打卡了。最近工作上的事情特别多,主要聚焦在大模型的预训练、微调和RAG两个方面。主要用到的框架是Megatron-DeepSpeed,后续会带来一些分享。今天的文章主要聚焦在RAG。 近期调研了一系…...
iOS 修改图片颜色
需求中会遇到这种情况,就是我们需要的图片是已经有的 但是图片的颜色不符合我们的需求,但是又不想再切新的图片了,这个时候,我们可以使用代码的方式修改图片的颜色,达到同样的效果 关键代码就是 [image imageWithRend…...
OceanBase到MySQL实时同步方案
概述 本方案基于OceanBase Binlog服务,采用数据库实时复制软件Beedup订阅捕获OceanBase数据库的Binlog事件,复制软件将Binlog事件还原为MySQL支持的DML或DDL,然后交由MySQL数据库执行。 配置Binlog任务 启用OceanBase Binlog服务ÿ…...
信息系统项目管理师——第8章章 项目整合管理 笔记
8 项目整合管理(最后反过来看) 项目整合过程:①制定项目章程(启动过程)、②制订项目管理计划(规划过程)、③指导和管理项目工作、管理项目知识(执行过程)、④监控项目工…...
最好用的图文识别OCR -- PaddleOCR(1) 快速集成
最近在项目中遇到了 OCR 的需求,希望能够实现高效而准确的文字识别。由于预算限制,我并未选择商业付费方案,而是优先尝试了开源工具。一开始,我测试了 GOT-OCR2.0,但由于我的 Mac 配置较低,不支持 GPU 运算…...
Unity制作3D场景的脑电运动想象范式(左右手抓握)
使用Unity制作3D场景中的运动想象范式 3D技术可以创建出立体的图像和环境,给用户带来更加真实和沉浸式的体验,本文介绍了一种可控的左右手运动的3D场景范式的设计流程,用于被试在3D场景下完成运动想象脑电信号数据的采集。 目录 1.制作动画…...
python23-常用的第三方库01:request模块-爬虫
requests 模块是 Python 中的一个第三方库,用于发送 HTTP 请求。 它提供了一个简单且直观的 API,使得发送网络请求和解析响应变得非常容易。requests 模块支持各种 HTTP 方法,如 GET、POST、PUT、DELETE 等,并且具有处理 cookies…...
CAT3D: Create Anything in 3D with Multi-View Diffusion Models 论文解读
24年5月的论文,上一版就是ReconFusion 目录 一、概述 二、相关工作 1、2D先验 2、相机条件下的2D先验 3、多视角先验 4、视频先验 5、前馈方法 三、Method 1、多视角扩散模型 2、新视角生成 3、3D重建 一、概述 该论文提出一种CAT3D方法,实现…...
持续学习入门
参考视频(一) 【学无止境:深度连续学习】 背景 更新新的数据时,数据异步输入,会有灾难性遗忘 现有解决策略 (1)引入正则约束(2)设计合适的动态模型架构 ÿ…...
天猫推荐数据集实践
参考自 https://github.com/xufengtt/recom_teach_code,学习记录。 环境配置(maxcomputedataworks) 下载天猫推荐数据集;开启 aliyun 的 maxcompute,dataworks,pai;使用 odpscmd 上传本地数据…...
宝塔面板备份翻车实录:我是如何用rclone+阿里云OSS实现自动化异地容灾的
宝塔面板数据安全实战:从备份翻车到自动化异地容灾 凌晨三点,服务器硬盘的物理损坏警报声把我从睡梦中惊醒。登录宝塔面板后,眼前一片空白——过去半年的网站数据与客户资料全数消失。更讽刺的是,前一天刚执行过本地备份ÿ…...
暗黑破坏神2存档编辑器:安全高效的d2s文件修改与角色属性调整工具
暗黑破坏神2存档编辑器:安全高效的d2s文件修改与角色属性调整工具 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 暗黑破坏神2存档编辑器(d2s-editor)是一款专为《暗黑破坏神2》玩家设计的开源…...
别再死记硬背了!用PyTorch图解U-Net中的卷积、反卷积与Skip Connection
从张量视角拆解U-Net:PyTorch实战中的维度魔术与跳跃连接 当你第一次看到U-Net的对称结构图时,是否曾被那些上下翻飞的箭头和不断变化的数字搞得晕头转向?作为医学图像分割领域的标杆架构,U-Net的核心秘密其实藏在三个关键操作里…...
Qwen3.5-9B效果展示:中文新闻事件抽取+时间线生成+关联人物图谱
Qwen3.5-9B效果展示:中文新闻事件抽取时间线生成关联人物图谱 1. 模型核心能力概览 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,在中文处理和多模态理解方面展现出卓越能力。这个模型特别适合处理复杂的文本分析任务,能够从海量信息中提…...
AI 创作者指南:附录工具包
📦 附录工具包 “工具不是答案,但能让你更快找到答案。” 第五部分压轴刚聊完“人类永远有护城河”,你现在从灵感到商业化、从伦理到未来,全链路都打通了,是不是心里满满的成就感?😊 来,重头戏到了——📦 附录工具包! 这可是我给你准备的“创作百宝箱”,全都是现…...
OpenSpeedy游戏变速工具实战指南:打破帧率限制的完整攻略
OpenSpeedy游戏变速工具实战指南:打破帧率限制的完整攻略 【免费下载链接】OpenSpeedy 🎮 An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy OpenSpeedy是一款开源免费的游戏变速工具,能…...
实战指南:基于快马平台快速开发并部署班级宠物园应用官方下载门户
最近学校想推广一个班级宠物园的教育应用,需要快速搭建一个官方下载页面。作为技术负责人,我尝试用InsCode(快马)平台来快速实现这个需求,整个过程比想象中顺利很多。 项目规划与结构设计 首先明确页面需要包含的几个核心模块:顶部…...
数字记忆保护新方案:GetQzonehistory让QQ空间数据备份不再困难
数字记忆保护新方案:GetQzonehistory让QQ空间数据备份不再困难 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代,我们的个人记忆越来越多地以数据形式存…...
哔咔漫画下载器:多线程极速下载完整指南
哔咔漫画下载器:多线程极速下载完整指南 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh_mirrors/pi/pi…...
从仿真到实战:如何将你的MATLAB机械臂轨迹规划代码(3-5-3插值)部署到ROS或Simulink?
从仿真到实战:MATLAB机械臂轨迹规划代码的ROS与Simulink部署指南 当你完成了MATLAB中机械臂轨迹规划的算法开发,看着屏幕上平滑的位置、速度和加速度曲线,接下来面临的核心问题是如何将这些数据转化为真实机械臂的动作。本文将深入探讨两种主…...
