#python #performance #for-loop #printing
#python #Производительность #for-цикл #печать
Вопрос:
Мне интересно, как я могу ускорить следующий код. Он принимает входные данные от пользователя и печатает наиболее повторяющийся элемент. Первый ввод — это количество значений, которые пользователь хочет ввести.
N = int(input())
B=[]
for i in range(N):
b = (int(input()))
B.append( (b) )
print(max(set(B), key=B.count))
Комментарии:
1. Я не могу представить, чтобы человек набирал достаточно чисел, чтобы сделать это медленно. Сколько времени это займет для запуска?
2. Числа могут быть введены роботом, и это могут быть тысячи. Мне это нужно менее 5 секунд.
Ответ №1:
Вы можете использовать collections.Counter
from collections import Counter
Counter(B).most_common(n=1)[0][0]
С помощью сравнения времени:
from random import randint
B = [randint(0, 25) for _ in range(10000)]
%%timeit
max(set(B), key=B.count)
# 3.89 ms ± 63.4 µs per loop
%%timeit
Counter(B).most_common(n=1)[0][0]
# 434 µs ± 53.8 µs per loop