在没有NLTK模块的情况下计算三卦

时间:2017-03-13 23:39:20

标签: python performance loops dictionary

我试图计算输入文本文件中的三元组并返回包含三元组的字典以及它们出现次数的计数。

我当前的代码功能齐全,但速度太慢,影响了我的其余代码。请帮我找出一种方法,让我当前的代码工作更快或只是使用不同的方法。谢谢!

我当前(慢)的代码:

def count( txt ):

    list_s = list( s )
    count_list = []

    for i in range(len(list_s) - ( 2 ) ):

        letter = ''.join( list_s [ i:i + 3 ])
        count_list.append( letter )

        ls_to_dict = {}

        for i in count_list:

            ls_to_dict[i] = count_list.count(i)

    return ls_to_dict

1 个答案:

答案 0 :(得分:0)

缓慢是因为你的计数太多了。查看循环逻辑:在第一次迭代中,您找到第一个三元组,并计算一个。在第二次迭代中,您获得第二个三元组...然后计算第一个和第二个三元组。在第三次,你找到第三个三元组,并计算前三个...你现在已经计算了第三个三元组三次。

拆分逻辑:找到所有三元组,然后计算它们。此外,您不必将列表拆分为字母;只是使用切片。

顺便说一下,您的代码不会运行:决定您的参数是 txt 还是 s ;我会在这里使用 txt

Homestead.yaml

这会让你感动吗?