擅长:python、mysql、java
<p>您在评论中提到需要重用已删除距离的索引。您可以使用列表理解功能立即生成所需的所有<code>indx</code>的列表:</p>
<pre><code>indxs = [k for k,d in enumerate(distances) if d <= cutOff]
</code></pre>
<p>然后您可以在这个新列表上进行迭代,以完成您需要的其他工作:</p>
^{pr2}$
<p>你也可以将你的其他工作归纳为另一个清单理解:</p>
<pre><code>indxs = [k for k,d in enumerate distances if d > cutOff] # note reversed logic
distances = [distances[indx] for indx in indxs] # one statement so doesn't fall in the modify-as-you-iterate trap
otherlist = [otherlist[2*indx, 2*indx+1] for indx in indxs]
</code></pre>
<p>另外,如果您正在使用<a href="http://www.numpy.org" rel="nofollow">NumPy</a>,这是一个面向Python的数值和科学计算包,那么您可以利用boolean数组以及它们所称的<a href="http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html" rel="nofollow">smart indexing</a>,并直接使用<code>indxs</code>访问列表:</p>
<pre><code>import numpy as np
distances = np.array(distances) # convert to a numpy array so we can use smart indexing
keep = ~(distances > cutOff)
distances = distances[keep] # this won't work on a regular Python list
</code></pre>