2017-05-31 143 views
0

此代碼運行時間很長。此程序運行時間太長

它是爲了找到文本文件中最常見的單詞。

它在Python 3.5.1。

驗證碼:

cTR = [] 
cTRC = [] 


file = open("fileToCompress3.txt","r") 
analysis = file.read().split(' ') 
file.close() 


##### Most Common Word ##### 
print(1) 

for i in range(len(analysis)): 

    if analysis[i] not in cTR: 
     cTR.extend([analysis[i]]) 
     cTRC.extend([1]) 

    elif analysis[i] in cTR: 

     for j in range(len(cTR)): 

      if cTR[j] == analysis[i]: 

       use = j 
       break 

     cTRC[use] = cTRC[use] + 1 

謝謝你,我真的很感激任何幫助!

回答

2

是的,這是一個非常低效的方式來做到這一點 - Θ(n²)時間。 Python有a built-in counter type,做Θ(n)的比較:

from collections import Counter 

with open("fileToCompress3.txt", "r", encoding="utf-8") as f: 
    words = f.read().split() 

word_counts = Counter(words) 

print(word_counts.most_common(1)) 
+0

非常感謝您的回答,但你怎麼能在數分開字作爲現在它打印像>>> [(下稱「」,46) ('',33),('',33),('和',31),('to',25)] –

+0

您可以使用'zip()'分割它們:'cTR, cTRC = zip(* word_counts.most_common())' – AChampion

+0

@TheEngineer:你想要結果看起來像什麼?它們是元組,所以最常用的單詞是'word_counts.most_common(1)[0] [0]'。 – Ryan