input: Write a function that moves all zeroes in a given list to the end while maintaining the order of the non-zero elements. The function should return the modified list. If the input list is empty, return an empty list.
  
  def move_zeroes(lst):
      if not lst:
          return []
      num_non_zeroes = sum(1 for num in lst if num != 0)
      new_lst = [num for num in lst if num != 0]
      new_lst.extend([0] * (len(lst) - num_non_zeroes))
      return new_lst
  
  assert move_zeroes([3, 0, 1, 0, 5, 0, 2])==[3, 1, 5, 2, 0, 0, 0]
  assert move_zeroes([0, 0, 0, 1, 2, 0, 3])==[1, 2, 3, 0, 0, 0, 0]
  assert move_zeroes([1, 2, 3, 4, 5])==[1, 2, 3, 4, 5]
  assert move_zeroes([0, 0, 0, 0, 0])==[0, 0, 0, 0, 0]
  assert move_zeroes([])==[]
output: def move_zeroes(lst):
      if not lst:
          return []
      num_non_zeroes = sum(1 for num in lst if num != 0)
      new_lst = [num for num in lst if num != 0]
      new_lst.extend([0] * (len(lst) - num_non_zeroes))
      return new_lst