fork download
  1. from collections import Counter, defaultdict
  2.  
  3. x = [1, 1, 2, 3, 1, 3]
  4.  
  5. def times_so_far():
  6. return list(times_so_far_generator(x))
  7.  
  8. def times_so_far_generator(nums):
  9. counter = Counter()
  10. for num in nums:
  11. counter[num] += 1
  12. yield counter[num]
  13.  
  14. def times_so_far_d():
  15. return list(times_so_far_generator_d(x))
  16.  
  17. def times_so_far_generator_d(nums):
  18. counter = defaultdict(int)
  19. for num in nums:
  20. counter[num] += 1
  21. yield counter[num]
  22.  
  23. if __name__ == '__main__':
  24. import timeit
  25. print(timeit.timeit(times_so_far, number=100000))
  26. print(timeit.timeit(times_so_far_d, number=100000))
Success #stdin #stdout 1.77s 9080KB
stdin
Standard input is empty
stdout
1.24481296539
0.515898942947