input: Write a function to perform matrix multiplication on two given matrices. The function should take two matrices A and B as input and return the resulting matrix after multiplication. If the matrices cannot be multiplied due to mismatching dimensions, the function should raise a ValueError.
  def matrix_multiplication(A, B):  
      rows_A = len(A)  
      cols_A = len(A[0])  
      rows_B = len(B)  
      cols_B = len(B[0])  
      if cols_A != rows_B:  
          raise ValueError("Matrices cannot be multiplied")  
      result = [[0 for i in range(cols_B)] for j in range(rows_A)]  
      for i in range(rows_A): 
          for j in range(cols_B): 
              for k in range(cols_A): 
                  result[i][j] += A[i][k] * B[k][j] 
      return result
  
  assert matrix_multiplication([[1, 2], [3, 4]], [[5, 6], [7, 8]])==[[19, 22], [43, 50]]  
  assert matrix_multiplication([[1, 0], [0, 1]], [[1, 0], [0, 1]])==[[1, 0], [0, 1]]  
  assert matrix_multiplication([[2, 0], [0, 2]], [[1, 1], [1, 1]])==[[2, 2], [2, 2]]  
  assert matrix_multiplication([[4, 2, 0], [6, 3, 1]], [[2, 3], [5, 0], [1, 4]])==[[18, 12], [28, 22]]  
  try:  
      matrix_multiplication([[1, 2]], [[1, 2], [3, 4], [5, 6]])  
  except ValueError:  
      assert True
output: def matrix_multiplication(A, B):  
      rows_A = len(A)  
      cols_A = len(A[0])  
      rows_B = len(B)  
      cols_B = len(B[0])  
      if cols_A != rows_B:  
          raise ValueError("Matrices cannot be multiplied")  
      result = [[0 for i in range(cols_B)] for j in range(rows_A)]  
      for i in range(rows_A): 
          for j in range(cols_B): 
              for k in range(cols_A): 
                  result[i][j] += A[i][k] * B[k][j] 
      return result