0

我正在尝试将所有给定文档之间的距离存储到距离矩阵中。

这是我的代码:

    dists = [] #a matrix of distances
    i=0
    for row in self.matrix:
        current_row = row
        document_distances = []
        # build list with possibilities for every document in labels
        for label in self.labels:
            document_distances.append((1 - self.row_distance(current_row, label), label))

        dists[i] = document_distances #[(0.22529600444665132, 'Doc1'), (0.22952074233187614, 'Doc2'), (0.289625872768411, 'Doc3'), ...]
        i += 1
    print(dists)

但运行代码后,出现以下错误:

IndexError: list assignment index out of range

谁能告诉我应该更改什么才能使我的代码正常工作?

4

2 回答 2

1

而不是这样做:

dists[i] = document_distances

做这个:

dists.append(document_distances)
于 2017-11-04T16:26:36.453 回答
1

您的代码有一些非常奇怪的语句:您遍历row,然后将其分配给current_row,等等。此外,您还跟踪了一些计数器。这些都不是必须的。

最好的方法可能是使用列表理解

dists = [(1 - self.row_distance(row, label), label)
             for row in self.matrix
             for label in self.labels]

这将替换所有代码。

或者,如果您真的想要程序代码,您可以使用append

dists = [] #a matrix of distances

for row in self.matrix:
    document_distances = []
    for label in self.labels:
        document_distances.append((1 - self.row_distance(current_row, label), label))

    dists.append(document_distances)
print(dists)
于 2017-11-04T16:26:58.187 回答