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、总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源-Docker部署Cook菜谱工具

开源-Docker部署Cook菜谱工具 文章目录 开源-Docker部署Cook菜谱工具介绍资源列表基础环境一、安装Docker二、配置加速器三、查看Docker版本四、拉取cook镜像五、部署cook菜谱工具5.1、创建cook容器5.2、查看容器运行状态5.3、查看cook容器日志 六、访问cook菜谱服务6.1、访问c…

PRP和SGL 你了解吗?

一直想总结一下,PRP和SGL,网上也有不少资料,nvme官方spec只用了六七页解释了这俩货,还把寄存器如何操作也说明白了,作总结的目的是让自己对其更加深入了解 首先,SSD是用来保存数据,不是读就是写…

JavaWeb6 Tomcat+postman请求、响应

Web服务器 对HTTP协议操作进行封装,简化web程序开发 部署web项目,对外提供网上信息浏览服务 Tomcat 轻量级web服务器,支持servlet,jsp等少量javaEE规范 也被称为web容器,servlet容器 Springboot有内置Tomcat nginx…

制造业泄密如何防范?应用迅软DSE加密软件能解决哪些问题?

项目背景 某公司电子技术产品广泛应用于航天、航空、航海、遥测、导航、雷达、电子对抗、通信等高端领域。内部会有各种各样的研发核心数据流转在不同的岗位之间,这些核心数据一旦出现信息泄密或篡改数据的情况,将会给企业带来不可估量的经济损失&#…

cloudflare worker访问自己的网站显示521问题解决

写在前面:如果你的网站不是在80端口上运行的,开一下80端口可能就行了… 1.在cloudlare上添加域名 前文搭建了自己的DNS服务器(DNS服务器搭建),现在想通过自己的DNS服务器解析域名,需要四步: 添…

基于FreeRTOS+STM32CubeMX+LCD1602+MCP6S21(SPI接口)的单通道模拟可编程增益放大器Proteus仿真

一、简介: MCP6S21是单通道模拟可 编程增益放大器(Programmable Gain Amplifiers, PGA)。它们可配置为输出 +1 V/V 到 +32 V/V 之间的增 益。串行接口也可以将 PGA 置为关断模式,以降低 功耗。这些 PGA 针对高速度、低失调电压和单电源操 作进行了优化,具有轨到轨输入和输…

使用ZIP包安装MySQL及配置教程

在本教程中,我们将指导您完成使用ZIP包安装MySQL的过程,并对配置文件进行必要的修改,以及解决可能遇到的问题。本示例以MySQL 5.7.44为例,但步骤同样适用于其他版本如MySQL 8.3.0等。请根据实际需要选择适合的版本下载&#xff1a…

【Nginx系列】分发算法

文章目录 一、分发算法介绍二、nginx集群默认算法三、nginx业务服务器状态四、nginx集群默认算法测试实验环境实验拓扑4.1、轮询算法4.2、基于权重4.3、基于ip_hash分发4.4、基于url的hash 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界…

【启明智显方案分享】ESP32-S3与GPT AI融合的智能问答嵌入式设备应用解决方案

一、引言 随着物联网(IoT)和人工智能(AI)技术的飞速发展,嵌入式设备正逐渐变得智能化。本解决方案是启明智显通过结合ESP32-S3的低功耗、高性能特性和GPT(Generative Pre-trained Transformer)…

快手AI算法岗,50W年包羡慕到流泪

今天在脉脉上看到一个应届毕业生offer选择的帖子,简直羡慕到流泪。 刚毕业就拿到了两大公司的AI算法岗的offer,而且薪资待遇都非常不错,只能说:优秀的人到哪里都是榜样。 先看下这两个offer。 第一个是中信银行的AI算法。 年包…

改进YOLOv8 | 主干网络篇 | YOLOv8 更换主干网络之 StarNet | 《重写星辰⭐》

本改进已集成到 YOLOv8-Magic 框架。 论文地址:https://arxiv.org/abs/2403.19967 论文代码:https://github.com/ma-xu/Rewrite-the-Stars 最近的研究引起了人们对“星形运算”(按元素乘法)在网络设计中未被充分利用的潜力的关注。虽然直观的解释很多,但其应用的基本原理…

网络的下一次迭代:AVS 将为 Web2 带去 Web3 的信任机制

撰文:Sumanth Neppalli,Polygon Ventures 编译:Yangz,Techub News 本文来源香港Web3媒体:Techub News AVS (主动验证服务)将 Web2 的规模与 Web3 的信任机制相融合,开启了网络的下…

OpenCV 的模板匹配

OpenCV中的模板匹配 模板匹配(Template Matching)是计算机视觉中的一种技术,用于在大图像中找到与小图像(模板)相匹配的部分。OpenCV提供了多种模板匹配的方法,主要包括基于相关性和基于平方差的匹配方法。…

前端数据模拟Mock.js

新建mock-demo的项目,安装npm install mockjs 新建index.js //引入mockjs import Mock from mockjs //设置延迟时间 // Mock.setup({ // timeout:4000 // }) //使用mockjs模拟数据 Mock.mock(/product/search,{"ret":0,"data":{"mtim…

动手学深度学习33 单机多卡并行

单机多卡并行 更多的芯片 https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_2.pdf 多GPU训练 https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_3.pdf 当transformer模型很大,有100GB的时候只能用模型并行。 数据并行,拿的参数是完整的&#xff1f…

JavaWeb5 SpringBoot+HTTP协议

Spring Spring Boot 非常快速构建应用程序,简化开发 (1)创建Springboot工程,勾选web开发依赖 创建好的目录,并将没用多余的删掉了 (2)定义请求处理类,并添加方法 创建请求处理类…

机器学习分类及算法

1. 深度学习 1.1学习算法 1.2基本术语和概念 1.3机器学习分类常用算法 1.3.1线性回归 1.3.2逻辑回归 1.3.3决策树 1.3.4朴素贝叶斯 1.3.5支持向量机SVM 1.3.6K-最近临邻KNN 还有K-均值(k-means)、随机森林、降维、人工神经网络等 1.4超参数和验证集 1.4.…

晨持绪科技:抖音网店怎么做有前景

在数字时代的浪潮中,抖音平台以其独特的魅力和庞大的用户基础成为电商的新阵地。开设一家有前景的抖音网店,不仅需要对市场脉搏有敏锐的洞察力,还需融合创新思维与数据驱动的营销策略。 明确定位是成功的先声。深入分析目标消费群体的需求与偏…

SQL 窗口函数

1.窗口函数之排序函数 RANK, DENSE_RANK, ROW_NUMBER RANK函数 计算排序时,如果存在相同位次的记录,则会跳过之后的位次 有 3 条记录排在第 1 位时: 1 位、1 位、1 位、4 位…DENSE_RANK函数 同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次 有 3 条记录排在…

2024.6.12 作业 xyt

今日课堂练习&#xff1a;vector构造函数 #include <iostream> #include <vector> using namespace std;void printVector(vector<int> &v) {vector<int>::iterator iter;for(iterv.begin(); iter ! v.end(); iter){cout << *iter <<…