首页 > 解决方案 > 如何使循环计算更快

问题描述

我想让这段代码计算得更快。我的代码有太多循环,我想减少它。如何最小化 for 循环和 while 循环。我的代码即将对英文单词进行划分,出现在字符串(String)文本中,3个字符,统计三组字符出现的频率。该函数的值为 dict,其中键是文本中三个字符的集合,值是该字符在键中出现的频率。必须是单词,如果长度小于3,频率计数不区分大小写('ant'和'Ant'是cadia)。字符必须定义为'a','in'等键。

def main():
    text = "Thank you for help me"
    print(three_letters_count(text))


def three_letters_count(text):
    d = dict()
    res = []
    li = list(text.lower().split())
    for i in li:
        if len(i) < 3:
            res.append(i)  
        while len(i) >= 3: 
            res.append(i[:3])  
            i = i[1:]
    
    for i in res:
        d[i] = res.count(i)
        
    return d
    
    



if __name__ == '__main__':
    main()

标签: pythonpython-3.xfor-loopwhile-loopnested

解决方案


您可以调整while外观并将其切换为for循环。

请参阅下面的调整功能。

def three_letters_count(text):
    d = dict()
    res = []
    li = list(text.lower().split())
    for i in li:
        if len(i) < 3:
            res.append(i)  
        for index in range(0, len(i)):
            three_letter = i[index:index+3]
            if(len(three_letter) >= 3):
                res.append(three_letter)
    
    for i in res:
        d[i] = res.count(i)
        
    return d

推荐阅读