gpt4 book ai didi

python - 列表编辑的高效算法

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:43 25 4
gpt4 key购买 nike

我有一个 3D 点云,保存在两个列表中。具有 5 个点 (x,y,z) 的示例:(3,3,3), (1,1,1), (4,4,4), (2,2,2), (5,5,5 ) -> 我的列表如下所示:

z = [3, 1, 4, 2, 5] # the z values
pts = [(3,3), (1,1), (4,4), (2,2), (5,5)] # the x and y values

现在我想消除 z 值高于 3 的所有值:

# what I want to receive:
z = [3, 1, 2]
pts = [(3,3), (1,1), (2,2)]

我的算法在这里:

k = -1
for i in range(len(z)):
k += 1
if z[k] > h:
z.pop(k)
pts.pop(k)
k -= 1

这会返回我想要的结果 - 但速度非常慢(对于 >100,000 个值)。我考虑过先通过 z.sort() 对我的列表进行排序,然后执行 z = z[:index] - 但是当我对我的 z-list 执行此操作时,我的 pts-list 仍然未排序。即使我可以对两个列表进行排序,我是否也必须通过一个很长的 loop 来找到我的条件为 true 的索引?有谁知道更有效的解决方案?

最佳答案

z, pts = zip(*[(z, pt) for z, pt in zip(z, pts) if z <= 3])
print z, pts

输出

(3, 1, 2) ((3, 3), (1, 1), (2, 2))

关于python - 列表编辑的高效算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20145968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com