如何优化python代码(运行时间应小于10秒)?

如何优化python代码(运行时间应小于10秒)?,python,performance,python-3.x,optimization,Python,Performance,Python 3.x,Optimization,我必须优化代码,因为代码的运行时间超过了10s。对于较小的输入,代码工作绝对正常(小于10s),如果输入长度增加,则输出超过10s import re, time #from collections import OrderedDict final_dict = {} k_m_n = input() k_m_n = list(map(lambda x: int(x), re.findall(r'([0-9]+)', k_m_n))) AI = [] start = time.time() for

我必须优化代码,因为代码的运行时间超过了
10s
。对于较小的输入,代码工作绝对正常(小于
10s
),如果输入长度增加,则输出超过
10s

import re, time
#from collections import OrderedDict
final_dict = {}
k_m_n = input()
k_m_n = list(map(lambda x: int(x), re.findall(r'([0-9]+)', k_m_n)))
AI = []
start = time.time()
for i in range(k_m_n[2]):
    AI.append(int(input()))
AI_sort, l = sorted(AI), len(AI)


i = 0
while i < l:
    final_dict[AI_sort[i]] = cnt = AI_sort.count(AI_sort[i])
    i += cnt
print(final_dict)
i = 0
for k in sorted(final_dict, key=final_dict.get, reverse=True):
    if i < k_m_n[0]:
        print(k)
        i += 1

print(time.time()-start)

罪魁祸首是计数代码,如果
n
是输入的数量,
m
是唯一输入的数量,则计数代码不必要地以
O(m*n)
进行缩放。就是这部分,

i = 0
while i < l:
    final_dict[AI_sort[i]] = cnt = AI_sort.count(AI_sort[i])
    i += cnt
尽管如此,该程序还做了许多其他不必要的事情。可以用更少的代码这样编写:

import collections

k, m, n = [int(x) for x in input().split()]
occurrences = collections.Counter(int(input()) for i in range(n))
for num, seen in occurrences.most_common(k):
    print(seen)

您使用的是Python2还是Python3?显然是3,但这是什么计算?我使用的是Python3@MK:查看更新您是否尝试使用代码查找瓶颈?我不知道需要用您的代码替换代码的哪一部分?
final_dict = {}
for a in AI_sort:
    final_dict[a] = final_dict.get(a, 0) + 1
import collections

k, m, n = [int(x) for x in input().split()]
occurrences = collections.Counter(int(input()) for i in range(n))
for num, seen in occurrences.most_common(k):
    print(seen)