在python

时间:2017-10-27 23:26:53

标签: python

如何让这个程序更有效率?

    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)。

我知道这段代码是混乱且效率低下的,但我想听一些提示,以提高效率。

1 个答案:

答案 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