fork download
  1. from timeit import timeit
  2. import re
  3.  
  4.  
  5. lst = [123456, 889756, 854123, 997886, 634178] * 10000
  6.  
  7. def has_duplicates(n):
  8. s = 0
  9. while n:
  10. d = n % 10
  11. if (1<<d) & s:
  12. return True
  13. s |= 1<<d
  14. n = n // 10
  15. return False
  16.  
  17. def f(lst):
  18. return [i for i in lst if not has_duplicates(i)]
  19.  
  20.  
  21. def re_method(lst):
  22. r = re.compile(r"(\d).*\1")
  23. return [i for i in lst if not r.search(str(i))]
  24.  
  25.  
  26. def trincot1(lst):
  27. return [n for n in lst if len(set(str(n))) == len(str(n))]
  28.  
  29.  
  30. def afaalgo(lst):
  31. answer = []
  32. for value in lst:
  33. value = str(value)
  34. new_list = []
  35. for nums in value:
  36. new_list.append(nums)
  37. if sorted(list(set(new_list))) == sorted(new_list):
  38. answer.append(int(value))
  39. return answer
  40.  
  41. t0 = timeit(lambda: f(lst), number=10)
  42. t1 = timeit(lambda: re_method(lst), number=10)
  43. t2 = timeit(lambda: trincot1(lst), number=10)
  44. t4 = timeit(lambda: afaalgo(lst), number=10)
  45.  
  46. print(t0)
  47. print(t1)
  48. print(t2)
  49. print(t4)
Success #stdin #stdout 0.77s 98220KB
stdin
Standard input is empty
stdout
0.0501630306244
0.176096916199
0.12539601326
0.381166934967