擅长:python、mysql、java
<p>在Python3.3及更高版本中,可以使用<code>pool.starmap</code>。在早期版本中,您需要编写一个helper函数:</p>
<pre><code>def do_comparison(tupl):
x, y = tupl # unpack arguments
return compare_clusters(x, y)
pool = Pool()
values = pool.map(do_comparison, itertools.combinations(clusters, 2))
condensed_distance_matrix = [1 / float(v) if v != 0 else 10 for v in values]
</code></pre>
<p>我完全避免了索引,而是直接生成2元组的集群值,从而简化了许多事情。您根本不需要top <code>for</code>循环。我还将反转代码简化为一个列表理解,而不是一个每个项目调用一次<code>append</code>的循环。在</p>
<p>当然,您在循环中所做的另一件事是提取<code>spectra_names</code>的值。与其一次只做一个索引,我建议使用列表理解一次性构建所有索引(它可以与上面的池内容分开):</p>
^{pr2}$