input: Write a function to optimize a Python program that processes a 2D array and stores the transpose output in a new array. The function should take a 2D list as input and return a new 2D list representing the transpose.
  
  def transpose(A):
   n = len(A)
   m = len(A[0])
  
   B = [[0 for x in range(n)] for x in range(m)]
  
   for i in range(n):
    for j in range(m):
     B[j][i] = A[i][j]
  
   return B
  assert transpose([[1, 2, 3], [4, 5, 6]])==[[1, 4], [2, 5], [3, 6]]
  assert transpose([[1, 2], [3, 4], [5, 6]])==[[1, 3, 5], [2, 4, 6]]
  assert transpose([[1]])==[[1]]
output: def transpose(A):
   n = len(A)
   m = len(A[0])
   B = [[0 for x in range(n)] for x in range(m)]
   for i in range(n):
    for j in range(m):
     B[j][i] = A[i][j]
   return B