2017-10-19 124 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