当前位置: 首页 > 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…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...