input: Write a function to move all zeroes in a list to the end of the list while maintaining the order of the other elements. The function should return the modified list. If the list is empty, it should return an empty list.
  def move_zeroes(lst):
      # Count the number of non-zero elements
      num_non_zeroes = 0
      for num in lst:
          if num != 0:
              num_non_zeroes += 1
    
      # Initialize the new list
      new_lst = []
    
      # Move all non-zeroes to the beginning of the new list
      for i in range(num_non_zeroes):
          new_lst.append(lst[i])
    
      # Append 0's to the end
      for _ in range(len(lst)-num_non_zeroes):
          new_lst.append(0)
    
      # Return the new list
      return new_lst
  
  assert move_zeroes([3, 0, 1, 0, 5, 0, 2])==[3, 1, 5, 2, 0, 0, 0]
  assert move_zeroes([0, 1, 0, 3, 12])==[1, 3, 12, 0, 0]
  assert move_zeroes([0, 0, 0])==[0, 0, 0]
  assert move_zeroes([1, 2, 3])==[1, 2, 3]
  assert move_zeroes([])==[]
output: def move_zeroes(lst):
      non_zeroes = [x for x in lst if x != 0]
      zeroes = [0] * (len(lst) - len(non_zeroes))
      return non_zeroes + zeroes