2017-10-19 74 views
0

我在蟒蛇以下功能如何返回输入参数的值在for循环中

def find_new_similar(tfidf_matrix2, index, tfidf_matrix, top_n = 1): 
    cosine_similarities = linear_kernel(tfidf_matrix2[index:index+1], tfidf_matrix).flatten() 
    related_docs_indices = [i for i in cosine_similarities.argsort()[::-1] if i != index] 
    return [(index, cosine_similarities[index]) for index in related_docs_indices][0:top_n] 

其中一旦调用此我得到的东西,如:

>>> find_new_similar(tfidf_matrix2, 40, tfidf_matrix) 

([(260816, 0.55759049663331683)]) 

这是该指数的related_docs_indicescosine_similarities的结果为索引作为输入给我的功能。我还想返回我传递给函数的初始索引i。我曾尝试过:

def find_new_similar(tfidf_matrix2, index, tfidf_matrix, top_n = 1): 
    cosine_similarities = linear_kernel(tfidf_matrix2[index:index+1], tfidf_matrix).flatten() 
    related_docs_indices = [i for i in cosine_similarities.argsort()[::-1] if i != index] 
    return [(index, cosine_similarities[index]) for index in related_docs_indices][0:top_n], index 

即只是将,index添加到返回命令的末尾。但这种输出:

>>> find_new_similar(tfidf_matrix2, 40, tfidf_matrix) 

([(260816, 0.55759049663331683)], 0) 

,但我其实期待

([(260816, 0.55759049663331683)], 40) 

在此先感谢

+0

不能重命名为'指数像'因为我在related_docs_indices',不要重复使用的参数名称作为当然的变量 – depperm

+0

。谢谢 – brucezepplin

回答

1

指数的值在列表理解(**在下面的代码)所取代!

return [(index, cosine_similarities[index]) for **index** in related_docs_indices][0:top_n], index 

因此重命名迭代变量会得到期望的结果!在related_docs_indices`

return [(i, cosine_similarities[i]) for i in related_docs_indices][0:top_n], index 
+0

谢谢这是问题 – brucezepplin

+0

只需要等待9分钟接受哈哈 – brucezepplin