parameters: (ndim, source, destination)
return_statement: return tuple(perm)
docstring: Helper function for moveaxis, returns permutation after moving axes
      from source to destination.
docstring_summary: Helper function for moveaxis, returns permutation after moving axes
      from source to destination.
docstring_tokens: Helper function for moveaxis returns permutation after moving axes from source to destination .
function: def _get_moved_perm(ndim, source, destination):
      """
      Helper function for moveaxis, returns permutation after moving axes
      from source to destination.
      """
      dest_sorted_idx = [i for i, _ in sorted(enumerate(destination),
                                              key=operator.itemgetter(1))]
      axes_orig = [i for i in range(ndim) if i not in source]
  
      k = 0
      m = 0
      perm = []
      for i in dest_sorted_idx:
          # inserts an axis that has been moved, denoted by n, and axes that remain
          # in their original position, indexed from k to k + n - m, into index m in
          # the list of permuted axes
          n = destination[i]
          j = k + n - m
          perm += axes_orig[k:j]
          perm.append(source[i])
          k += n - m
          m = n + 1
      perm += axes_orig[k:]
      return tuple(perm)
function_tokens: def _get_moved_perm ( ndim , source , destination ) : dest_sorted_idx = [ i for i , _ in sorted ( enumerate ( destination ) , key = operator . itemgetter ( 1 ) ) ] axes_orig = [ i for i in range ( ndim ) if i not in source ] k = 0 m = 0 perm = [ ] for i in dest_sorted_idx : # inserts an axis that has been moved, denoted by n, and axes that remain # in their original position, indexed from k to k + n - m, into index m in # the list of permuted axes n = destination [ i ] j = k + n - m perm += axes_orig [ k : j ] perm . append ( source [ i ] ) k += n - m m = n + 1 perm += axes_orig [ k : ] return tuple ( perm )