Guest User

Untitled

a guest
Jan 17th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. import timeit
  2.  
  3.  
  4. def sample_code():
  5. lst, v = [1, 5, 3, 4, 5, 6, 7, 5, 5, 10], 5
  6. remove_equal(lst, v)
  7. print(lst, v) # [1, 3, 4, 6, 7, 10] 5
  8.  
  9.  
  10. def remove_equal_listcomprehension(lst: list, v):
  11. new_lst = [e for e in lst if e != v]
  12. lst.clear()
  13. lst.extend(new_lst)
  14. del new_lst
  15.  
  16.  
  17. def remove_equal_for(lst, v):
  18. for i, e in reversed(list(enumerate(lst))):
  19. if e == v:
  20. del lst[i]
  21.  
  22.  
  23. def remove_equal_while(lst, v):
  24. new_lst = []
  25. pop = lst.pop
  26. append = new_lst.append
  27. while True:
  28. try:
  29. e = pop()
  30. except IndexError:
  31. break
  32. if e == v:
  33. del e
  34. else:
  35. append(e)
  36. new_lst.reverse()
  37. lst.extend(new_lst)
  38. del new_lst
  39.  
  40.  
  41. remove_equal = remove_equal_listcomprehension
  42. # remove_equal = remove_equal_for
  43. # remove_equal = remove_equal_while
  44.  
  45. if __name__ == '__main__':
  46. sample_code()
  47.  
  48. print(timeit.timeit(
  49. "remove_equal_listcomprehension([1, 2, 3, 4, 5, 6, 7, 8, 9 ,10], 5)",
  50. "from remove_equal import remove_equal_listcomprehension",
  51. number=1000000))
  52.  
  53. print(timeit.timeit(
  54. "remove_equal_for([1, 2, 3, 4, 5, 6, 7, 8, 9 ,10], 5)",
  55. "from remove_equal import remove_equal_for",
  56. number=1000000))
  57.  
  58. print(timeit.timeit(
  59. "remove_equal_while([1, 2, 3, 4, 5, 6, 7, 8, 9 ,10], 5)",
  60. "from remove_equal import remove_equal_while",
  61. number=1000000))
Add Comment
Please, Sign In to add comment