input: Write a function to move all zeroes in a given list to the end of the list while maintaining the order of the non-zero elements. If the given list is empty then return the list as it is.
  def move_zeroes(lst):
      num_non_zeroes = 0
      for num in lst:
          if num != 0:
              lst[num_non_zeroes] = num
              num_non_zeroes += 1
      for i in range(num_non_zeroes, len(lst)):
          lst[i] = 0
      return lst
  
  assert move_zeroes([3, 0, 1, 0, 5, 0, 2])==[3, 1, 5, 2, 0, 0, 0]
  assert move_zeroes([0, 0, 0, 0, 0])==[0, 0, 0, 0, 0]
  assert move_zeroes([1, 2, 3, 4, 5])==[1, 2, 3, 4, 5]
  assert move_zeroes([])==[]
  assert move_zeroes([0, 1, 0, 3, 12])==[1, 3, 12, 0, 0]
output: def move_zeroes(lst):
      num_non_zeroes = 0
      for num in lst:
          if num != 0:
              lst[num_non_zeroes] = num
              num_non_zeroes += 1
      for i in range(num_non_zeroes, len(lst)):
          lst[i] = 0
      return lst