【发布时间】:2021-01-02 22:26:12
【问题描述】:
我正在构建一个项目列表的相似性矩阵。 天真的方法是迭代列表两次,但这会不必要地比较 A:B 和 B:A 当它们相同时。
for A in items:
for B in items:
if A==B: continue
sim[A][B] = calc_sim(A, B)
有没有一种简单的方法来只计算一半的值? 我可以在里面放一个skip
if sim[B][A]: continue # already calculated in other direction
但迭代仍在发生。 实际上,我只想遍历网格的上半部分或下半部分:
有一些similar Qs,但没有一个规范的答案。 这似乎是一个基本的 CS 算法问题!
【问题讨论】:
-
这是关于 Python 的吗?
-
以上是伪代码。在这种情况下,我正在编写 python,但它更多的是关于独立于算法语言的。我知道我可以将 sklearn 之类的库用于 NearestNeighbot,但我对自己的原始算法更感兴趣。无论如何添加了一个python标签
-
使用
break代替continue? -
@superbrain 我认为你可能是对的!最简单的就是最好的哈哈。
标签: python algorithm sorting matrix sentence-similarity