fork download
  1. from collections import Counter, defaultdict
  2. import random
  3. import timeit
  4.  
  5.  
  6. data = [random.randint(0, 9) for _ in range(1000)]
  7.  
  8.  
  9. def ex1():
  10. c = Counter(data)
  11. return [i for i in data if c[i] > 1]
  12.  
  13.  
  14. def ex2():
  15. return [i for i in data if data.count(i) > 1]
  16.  
  17.  
  18. def ex3():
  19. c = defaultdict(int)
  20.  
  21. for i in data:
  22. c[i] += 1
  23.  
  24. return [i for i in data if c[i] > 1]
  25.  
  26.  
  27. if __name__ == '__main__':
  28. print('ex1', timeit.timeit(ex1, number=30))
  29. print('ex2', timeit.timeit(ex2, number=30))
  30. print('ex3', timeit.timeit(ex3, number=30))
  31.  
Success #stdin #stdout 0.79s 12744KB
stdin
Standard input is empty
stdout
ex1 0.013042625039815903
ex2 0.7291491776704788
ex3 0.01035170629620552