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

python中列表结构在点云数据处理中用法

1、前言

      Python中的列表(list)是一种可变的序列类型,用于存储集合数据。列表用途非常广泛,包括但不限于以下几个方面:

  1. 存储集合数据:列表用于存储一系列有序的元素,这些元素可以是任何数据类型,包括数字、字符串、其他列表、元组、字典等。

  2. 迭代数据:列表支持迭代,这意味着你可以使用循环(如for循环)来遍历列表中的每个元素。

  3. 增删改查操作

    • 增加元素:可以使用append()insert()extend()方法向列表中添加元素。
    • 删除元素:可以使用remove()pop()del语句从列表中删除元素。
    • 修改元素:可以通过索引直接修改列表中的元素。
    • 查找元素:可以使用index()方法查找元素的索引位置,或者使用in关键字检查元素是否存在于列表中。

2、列表结构在点云数据组织中用法

       在C++中结合vector与结构体struct{}实现点云数据组织,过程较为复杂。而python可以分方便根据点云数据进行存储。

2.1 增加元素

      点云一般包括坐标信息x、y、z,将所有点放入到列表中,定义列表my_list,利用append()函数将点放入列表中,代码如下:

my_list=[]
my_list.append((1,1,1))
my_list.append((2,2,2))
my_list.append((3,3,3))
my_list.append((4,4,4))

2.2 指定位置数据访问

      要访问列表中指定位置数据,要使用索引,其中Python中的索引是从0开始的,这意味着第一个元素的索引是0,第二个元素的索引是1,依此类推。如下所示,定义列表my_list,其存储了4个点,其中访问了第1个元素与第3个元素,利用[0]、[2]来访问。

my_list=[]
my_list.append((1,1,1))
my_list.append((2,2,2))
my_list.append((3,3,3))
my_list.append((4,4,4))#单独访问特定位置的元素
#访问第一个元素
first_element=my_list[0]
x=first_element[0]
y=first_element[1]
z=first_element[2]
print(x,y,z)#访问第3个元素
third_element=my_list[2]
x=third_element[0]
y=third_element[1]
z=third_element[2]
print(x,y,z)

2.3 for循环遍历访问

       for循环可用于访问列表中所有数据,此次列出3种for循环访问方式,适用于不同使用场景,如下,第一种直接对每个元素进行访问;第二种和第三种根据索引进行访问元素,其中range()根据索引来访问元素。

my_list=[]
my_list.append((1,1,1))
my_list.append((2,2,2))
my_list.append((3,3,3))
my_list.append((4,4,4))#第一种for循环方式
for element in my_list:x=element[0]y=element[1]z=element[2]print(x,y,z)#第二种for循环方式
for i in range(len(my_list)):element=my_list[i]x=element[0]y=element[1]z=element[2]print(x,y,z)#第三种for循环方式
for i in range(4):element=my_list[i]x=element[0]y=element[1]z=element[2]print(x,y,z)

2.4 元素值修改

       对于指定索引位置处的列表中元素进行修改,也是一种常见操作。若对索引为2对应的列表处值进行修改,则需要将值转换成列表,再进行修改,如下所示,可以发现索引2对应的元素值变为5 5 5。

my_list=[]
my_list.append((1,1,1))
my_list.append((2,2,2))
my_list.append((3,3,3))
my_list.append((4,4,4))element=list(my_list[2])#将元组转换为列表
element[0]=5
element[1]=5
element[2]=5
#将列表转换回元组
my_list[2]=tuple(element)for i in range(len(my_list)):element=my_list[i]x=element[0]y=element[1]z=element[2]print(x,y,z)

2.5 列表元素删除

    有时候为便于方便,需要对列表中某个索引位置处的元素进行删除,其余索引位置处元素保留,则使用pop()函数。运行结果如下,将索引3对应的元素进行剔除,其中索引为3对应的元素为3 3 3,使用pop()函数删除后,只剩下 1 2 4,因此打印出来结果为1、2、4。但是,如果为了保证被复制的列表中元素,也不被删除,那么一定要用创建副本形式。

      如下是创建副本形式,删除索引为3的元素,结果如下,被复制的my_list中元素未被删除,但是副本my_second中元素被删除

my_list = []
my_list.append((1, 1, 1))
my_list.append((2, 2, 2))
my_list.append((3, 3, 3))
my_list.append((4, 4, 4))my_second=my_list.copy()
index_remove=2
my_second.pop(index_remove)print('my_second元素值')
for element in my_second:print(element)print('my_list元素值')
for element in my_list:print(element)

      但如果直接采用引用形式,即“my_second=my_list”,那么这两个变量指向同一个引用,那么删除时这两个列表均会被删除,运行结果如下,3 3 3均被删除。

my_list = []
my_list.append((1, 1, 1))
my_list.append((2, 2, 2))
my_list.append((3, 3, 3))
my_list.append((4, 4, 4))my_second=my_list
index_remove=2
my_second.pop(index_remove)print('my_second元素值')
for element in my_second:print(element)print('my_list元素值')
for element in my_list:print(element)

3、总结

      列表用于存储点云数据非常方便,介绍了列表元素访问、删除操作。本博客结合点云数据处理中常见点云处理操作,如删除、修改、遍历举例,说明列表用法。

相关文章:

python中列表结构在点云数据处理中用法

1、前言 Python中的列表(list)是一种可变的序列类型,用于存储集合数据。列表用途非常广泛,包括但不限于以下几个方面: 存储集合数据:列表用于存储一系列有序的元素,这些元素可以是任何数据类型&…...

土耳其(小亚细亚)历史上的各个阶段

一个国家的历史书写方式有两种,其一是按本国主体民族的渊源,其二是本国国土内发生的都属于本国史。一般来说,这两种方式相当程度上是重合的,但也有例外,比如本文要讲述的土耳其。 土耳其的国土并不辽阔,其…...

Windows下基于Frida查看内存基址和修改寄存器

使用Frida能够方便地获取到DLL基址,还能修改寄存器值。首先要通过任务管理器获得进程的PID,然后写Python脚本把Frida附加到这个PID进程,根据IDA分析出来的函数地址,HOOK到目标函数,修改寄存器的值,最终实现…...

2024中国网络安全产品用户调查报告(发布版)

自2020年始,人类进入了21世纪的第二个十年,全球进入了百年未有之大变局,新十年的开始即被新冠疫情逆转了全球化发展的历程,而至2022年3月俄乌战争又突然爆发,紧接着2023年7月“巴以冲突"皱起,世界快速…...

手写图片懒加载

参考来自前辈 Aidan路修远i 的文章面试官&#xff1a;请你手写一下&#xff01;懒加载 - 掘金 (juejin.cn) Hello.vue <template><div><!-- src里面为空&#xff0c;data-original里面写图片真正的url(此处省略) --><img src"" data-origina…...

大型语言模型(LLMs)的后门攻击和防御技术

大型语言模型&#xff08;LLMs&#xff09;通过训练在大量文本语料库上&#xff0c;展示了在多种自然语言处理&#xff08;NLP&#xff09;应用中取得最先进性能的能力。与基础语言模型相比&#xff0c;LLMs在少样本学习和零样本学习场景中取得了显著的性能提升&#xff0c;这得…...

力扣2594.修车的最少时间

力扣2594.修车的最少时间 二分答案 class Solution {public:long long repairCars(vector<int>& ranks, int cars) {ranges::sort(ranks);auto check [&](long long x) -> bool{long long res 0;for(auto v : ranks){long long k sqrt(x/v);res k;if(r…...

攻防演练之-成功的钓鱼邮件溯源

书接上文&#xff0c;《网络安全攻防演练风云》专栏之攻防演练之-网络安全产品大巡礼二&#xff0c;这里。 演练第一天并没有太大的波澜&#xff0c;白天的时间过得很快。夜色降临&#xff0c;攻防演练中心内的灯光依旧明亮。对于网络安全团队来说&#xff0c;夜晚和白天并没有…...

Gi标签管理

文章目录 前言理解标签创建标签操作标签总结 前言 理解标签 标签&#xff0c;可以理解为对某次commit的一次标识&#xff0c;相当于起起了一个别名。 例如&#xff0c;在项目发布某个版本时候&#xff0c;针对最后一次commit起一个v1.0这样的标签来标识里程碑的意义。 这有什…...

2024福建等保测评公司有哪些?分别叫做什么名字?

2024福建等保测评公司有哪些&#xff1f;分别叫做什么名字&#xff1f; 【回答】&#xff1a;2024年具有资质的福建等保测评公司有6家&#xff0c;其名称以及地址如下&#xff1a; 1、福建省网络与信息安全测评中心&#xff0c;福州市鼓楼区东街8号利达大厦A座8层&#xff1b…...

王先宏老师厉害了,活页笔记版古琴曲谱拆箱图

王先宏老师走心了&#xff0c;活页笔记版古琴曲谱拆箱图&#xff0c;简直是史上最好的古琴学习利器&#xff01;送的防滑垫还带铝合金夹层的&#xff0c;养弦膏都是市面上没有的的。 这些古琴谱上的笔记就是老师课堂上用的&#xff0c;直接拿来就可以跟着弹&#xff0c;不用您…...

TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台

TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台。通过搜索结果&#xff0c;我们可以了解到 TalkingData 的一些关键特性和市场情况&#xff0c;并将其与同类型产品进行比较。 TalkingData 产品特性 数据统计与分析&#xff1a;提供专业的数…...

Springboot的小型超市商品展销系统-计算机毕业设计源码01635

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…...

UV胶开裂主要因素有哪些?如何避免?

UV胶开裂主要因素有哪些&#xff1f;如何避免&#xff1f; UV胶开裂的原因可能包括多个方面&#xff1a; 固化不足&#xff1a;UV胶的固化需要足够的紫外线照射。如果照射时间不够&#xff0c;或者紫外线光源的强度不足&#xff0c;胶水可能没有完全固化&#xff0c;从而导致开…...

LogicFlow 学习笔记——3. LogicFlow 基础 节点 Node

节点 Node LogicFlow 内置了一些基础节点&#xff0c;开发者在实际应用场景中&#xff0c;可以基于这些基础节点&#xff0c;定义符合自己业务逻辑的节点。 认识基础节点 LogicFlow是基于svg做的流程图编辑框架&#xff0c;所以我们的节点和连线都是svg基本形状&#xff0c;…...

VMware清理拖拽缓存

磁盘空间越用越小&#xff0c;如何快速解决磁盘空间的问题&#xff0c;甩掉烦恼 安装VM tools之后可以通过拖拽的方式把文件拉入虚拟机之中。但每一次拖拽&#xff0c;其实都是现在cache文件夹里面生成一个同样的文件&#xff0c;并使用cp拷贝的方式将其拷贝到拖拽放置的目录中…...

跨语言系统中的功能通信:Rust、Java、Go和C++的最佳实践

在现代软件开发中&#xff0c;使用多种编程语言构建复杂系统已成为一种常见的做法。每种编程语言都有其独特的优势和适用场景&#xff0c;这使得在同一个系统中使用多种语言变得合理且高效。然而&#xff0c;这也带来了一个重要的挑战&#xff1a;如何在这些不同语言之间实现高…...

4. Revit API UI 之 Ribbon(界面)

4. Revit API UI 之 Ribbon&#xff08;界面&#xff09; 第二篇中&#xff0c;我们提到了IExternalApplication&#xff0c;该接口需要实现两个方法&#xff1a;Revit启动时调用的OnStartup 方法&#xff0c;和Revit关闭时调研的OnShutdown 方法。文中还给了个例子&#xff0…...

js数组方法

改变原始数组返回一个新数组添加元素push&#xff0c;unshiftconcat&#xff0c;[…arr] 展开语法删除元素pop&#xff0c;shift&#xff0c;splicefilter&#xff0c;slice替换元素splice&#xff0c;arr[i] … 赋值map排序reverse&#xff0c;sort先将数组复制一份...

PyTorch -- 最常见损失函数 LOSS 的选择

损失函数&#xff1a;度量模型的预测结果与真实值之间的差异&#xff1b;通过最小化 loss -> 最大化模型表现代码实现框架&#xff1a;设有 模型预测值 f (x), 真实值 y 方法一&#xff1a; 步骤 1. criterion torch.nn.某个Loss()&#xff1b;步骤 2. loss criterion(f(x…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...