python中列表结构在点云数据处理中用法
1、前言
Python中的列表(list)是一种可变的序列类型,用于存储集合数据。列表用途非常广泛,包括但不限于以下几个方面:
-
存储集合数据:列表用于存储一系列有序的元素,这些元素可以是任何数据类型,包括数字、字符串、其他列表、元组、字典等。
-
迭代数据:列表支持迭代,这意味着你可以使用循环(如
for循环)来遍历列表中的每个元素。 -
增删改查操作:
- 增加元素:可以使用
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 的文章面试官:请你手写一下!懒加载 - 掘金 (juejin.cn) Hello.vue <template><div><!-- src里面为空,data-original里面写图片真正的url(此处省略) --><img src"" data-origina…...
大型语言模型(LLMs)的后门攻击和防御技术
大型语言模型(LLMs)通过训练在大量文本语料库上,展示了在多种自然语言处理(NLP)应用中取得最先进性能的能力。与基础语言模型相比,LLMs在少样本学习和零样本学习场景中取得了显著的性能提升,这得…...
力扣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…...
攻防演练之-成功的钓鱼邮件溯源
书接上文,《网络安全攻防演练风云》专栏之攻防演练之-网络安全产品大巡礼二,这里。 演练第一天并没有太大的波澜,白天的时间过得很快。夜色降临,攻防演练中心内的灯光依旧明亮。对于网络安全团队来说,夜晚和白天并没有…...
Gi标签管理
文章目录 前言理解标签创建标签操作标签总结 前言 理解标签 标签,可以理解为对某次commit的一次标识,相当于起起了一个别名。 例如,在项目发布某个版本时候,针对最后一次commit起一个v1.0这样的标签来标识里程碑的意义。 这有什…...
2024福建等保测评公司有哪些?分别叫做什么名字?
2024福建等保测评公司有哪些?分别叫做什么名字? 【回答】:2024年具有资质的福建等保测评公司有6家,其名称以及地址如下: 1、福建省网络与信息安全测评中心,福州市鼓楼区东街8号利达大厦A座8层;…...
王先宏老师厉害了,活页笔记版古琴曲谱拆箱图
王先宏老师走心了,活页笔记版古琴曲谱拆箱图,简直是史上最好的古琴学习利器!送的防滑垫还带铝合金夹层的,养弦膏都是市面上没有的的。 这些古琴谱上的笔记就是老师课堂上用的,直接拿来就可以跟着弹,不用您…...
TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台
TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台。通过搜索结果,我们可以了解到 TalkingData 的一些关键特性和市场情况,并将其与同类型产品进行比较。 TalkingData 产品特性 数据统计与分析:提供专业的数…...
Springboot的小型超市商品展销系统-计算机毕业设计源码01635
摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作…...
UV胶开裂主要因素有哪些?如何避免?
UV胶开裂主要因素有哪些?如何避免? UV胶开裂的原因可能包括多个方面: 固化不足:UV胶的固化需要足够的紫外线照射。如果照射时间不够,或者紫外线光源的强度不足,胶水可能没有完全固化,从而导致开…...
LogicFlow 学习笔记——3. LogicFlow 基础 节点 Node
节点 Node LogicFlow 内置了一些基础节点,开发者在实际应用场景中,可以基于这些基础节点,定义符合自己业务逻辑的节点。 认识基础节点 LogicFlow是基于svg做的流程图编辑框架,所以我们的节点和连线都是svg基本形状,…...
VMware清理拖拽缓存
磁盘空间越用越小,如何快速解决磁盘空间的问题,甩掉烦恼 安装VM tools之后可以通过拖拽的方式把文件拉入虚拟机之中。但每一次拖拽,其实都是现在cache文件夹里面生成一个同样的文件,并使用cp拷贝的方式将其拷贝到拖拽放置的目录中…...
跨语言系统中的功能通信:Rust、Java、Go和C++的最佳实践
在现代软件开发中,使用多种编程语言构建复杂系统已成为一种常见的做法。每种编程语言都有其独特的优势和适用场景,这使得在同一个系统中使用多种语言变得合理且高效。然而,这也带来了一个重要的挑战:如何在这些不同语言之间实现高…...
4. Revit API UI 之 Ribbon(界面)
4. Revit API UI 之 Ribbon(界面) 第二篇中,我们提到了IExternalApplication,该接口需要实现两个方法:Revit启动时调用的OnStartup 方法,和Revit关闭时调研的OnShutdown 方法。文中还给了个例子࿰…...
js数组方法
改变原始数组返回一个新数组添加元素push,unshiftconcat,[…arr] 展开语法删除元素pop,shift,splicefilter,slice替换元素splice,arr[i] … 赋值map排序reverse,sort先将数组复制一份...
PyTorch -- 最常见损失函数 LOSS 的选择
损失函数:度量模型的预测结果与真实值之间的差异;通过最小化 loss -> 最大化模型表现代码实现框架:设有 模型预测值 f (x), 真实值 y 方法一: 步骤 1. criterion torch.nn.某个Loss();步骤 2. loss criterion(f(x…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

