-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