def non_zero_push_left(line):
   """
   This function pushes non-zero numbers to the left and
   returns a new list after filling the zeros in place of the pushed numbers
   It takes O(n) time --> linear run-time complexity

   :param line:
   :return line_copy:
   """
   line_copy = []
   zero_counter = 0
   for num in line:
       if num != 0:
           line_copy.append(num)
       else:
           zero_counter += 1
   for index in range(zero_counter):
       line_copy.append(0)
   return line_copy