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

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

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云实验室lab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值