-2
我試圖加快下面的代碼。程序應該在字符串中找到流行的數字。這是數量,這出現在超過加速代碼
LEN(串)的字符串/ 2
倍。挑戰在於輸入文件由隨機數字串組成,每個字符串可以包含數千個數字。我試過了蠻力法
for line in lst:
nline = line.split(',')
m = [i for i in nline if nline.count(i) > len(nline)/2]
print(m[0] if len(m) > 0 else "None")
並且它產生了大約10秒的運行時間。
最快的版本約0.8秒
for line in lst:
nline = line.split(',')
d = collections.Counter(nline)
n = dict()
m = [i for i, n in d.items() if n > len(nline)/2]
print(m[0] if len(m) > 0 else "None")
有什麼方法來進一步提高性能運行?
感謝most_common,還沒弄明白。但是,這幾乎不會帶來任何性能優勢。就像你所說的。 – Sharky