-4
我正在運行一個循環(更像是一個迭代過程),目的是計算一對文本文件的一個數據集的餘弦相似度和84個文本文件。我遵循的邏輯是首先從文檔0和1計算它,然後計算文檔1和2,直到文檔n-1和n。我編寫它的方式如下:列表索引超出範圍循環Python
my_funcs = {}
for i in range(len(data)):
def foo(x, y):
x = data[i]['body']
y = data[i+1]['body']
tfidf = vectorizer.fit_transform([x, y])
return ((tfidf * tfidf.T).A)[0,1]
foo.func_name = "cosine_sim%d" % i
my_funcs["cosine_sim%d" % i] = foo
globals().update(my_funcs) # Export to namespace
毫不奇怪我的代碼給我下面的錯誤:list index out of range
。有沒有什麼辦法可以告訴循環停止當i = len(data)
?
你確實告訴循環停止,但'data [i + 1]'是錯誤的。也許你想'range(len(data)-1)'。 – msw
不要使用'globals()'沒有很大的理由。假設你沒有很好的理由,除非你能解釋你的理由爲什麼很好。 – msw