<p>我有一个三维点云,保存在两个列表中。具有5个点(x,y,z)的示例:(3,3,3)、(1,1,1)、(4,4,4)、(2,2,2)、(5,5,5)->;我的列表如下所示:</p>
<pre><code>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
</code></pre>
<p>现在我想消除z值大于3的所有值:</p>
<pre><code># what I want to receive:
z = [3, 1, 2]
pts = [(3,3), (1,1), (2,2)]
</code></pre>
<p>我的算法如下:</p>
<pre><code>k = -1
for i in range(len(z)):
k += 1
if z[k] > h:
z.pop(k)
pts.pop(k)
k -= 1
</code></pre>
<p>这正好返回了我想要的结果—但速度非常慢(对于>;100000个值)。
我想先通过<code>z.sort()</code>对我的列表进行排序,然后执行z=z[:index]——但是当我对z-list执行此操作时,我的pts列表仍然没有排序。即使我可以对这两个列表进行排序,我是否也需要经过一段很长的<code>loop</code>才能找到我的条件是<code>true</code>的索引?
有人知道更有效的解决方案吗?你知道吗</p>