如何让这个程序更有效率?
tempPossiblePairs = defaultdict(lambda: set([]))
for w1 in words:
for w2 in words:
if(w1 != w2):
tempPossiblePairs[w1].add(w2)
for w1 in words:
for w2 in words:
if(w1 != w2 and (w2 in tempPossiblePairs[w1])):
res.append((self.getPMI(w1, w2), self.pair(w1, w2)[0], self.pair(w1, w2)[1]))
我写了一个程序,它生成(给出一个列表'单词')一个字典,它将一个单词作为一个键,以及可以与键配对的单词作为值。然后我再次查看单词列表,看看它们是否相等,并且它们可以配对(通过检查tempPossiblePairs dict)。
我知道这段代码是混乱且效率低下的,但我想听一些提示,以提高效率。
答案 0 :(得分:1)
我认为你可以把它归结为
from itertools import product
res = [(self.getPMI(w1, w2), *self.pair(w1, w2)) for w1, w2 in product(words, repeat=2) if w1 != w2]
*self.pair
位将pair
的结果解压缩到元组中(假设pair
返回只有两个元素的东西),我认为它需要你有一个相对的最新版本的Python 3