擅长:python、mysql、java
<p>如果我正确地理解了您的代码,那么下面的代码应该可以工作</p>
<pre><code>from multiprocessing import Pool
condensed_distance_matrix = []
spectra_names = []
index_0 = 0
cluster_pairs = []
for index_1, index_2 in itertools.combinations(range(len(clusters)), 2):
if index_0 == index_1:
index_0 += 1
spectra_names.append(clusters[index_1].get_names()[0])
cluster_pairs.append((clusters[index_1], clusters[index_2]))
pool = Pool()
condensed_distance_matrix_values = pool.map(compare_clusters, cluster_pairs)
for value in condensed_distance_matrix_values :
try:
distance = 1/float(value)
except:
distance = 10
condensed_distance_matrix.append(distance)
</code></pre>
<p>因此,与其创建包含单个集群的两个列表,不如创建一个包含集群对元组的列表。新列表中的每个对都是要比较的群集对。您可能需要相应地调整<code>compare_clusters</code>函数。在</p>
<p>考虑到<code>Blckknght</code>的答案,您不需要迭代索引来创建<code>itertools.combinations</code>的对列表。所以您可以只做<code>pool.map(compare_clusters, itertools.combinations(clusters, 2))</code>,因为组合已经返回元组列表。在</p>