code: def _left_eigenvects(M, **flags):
      """Returns left eigenvectors and eigenvalues.
  
      This function returns the list of triples (eigenval, multiplicity,
      basis) for the left eigenvectors. Options are the same as for
      eigenvects(), i.e. the ``**flags`` arguments gets passed directly to
      eigenvects().
  
      Examples
      ========
  
      >>> from sympy import Matrix
      >>> M = Matrix([[0, 1, 1], [1, 0, 0], [1, 1, 1]])
      >>> M.eigenvects()
      [(-1, 1, [Matrix([
      [-1],
      [ 1],
      [ 0]])]), (0, 1, [Matrix([
      [ 0],
      [-1],
      [ 1]])]), (2, 1, [Matrix([
      [2/3],
      [1/3],
      [  1]])])]
      >>> M.left_eigenvects()
      [(-1, 1, [Matrix([[-2, 1, 1]])]), (0, 1, [Matrix([[-1, -1, 1]])]), (2,
      1, [Matrix([[1, 1, 1]])])]
  
      """
  
      eigs = M.transpose().eigenvects(**flags)
  
      return [
          (val, mult, [l.transpose() for l in basis])
          for val, mult, basis in eigs
      ]
  
imports: from types import FunctionType
  from collections import Counter
  from mpmath import mp, workprec
  from mpmath.libmp.libmpf import prec_to_dps
  from sympy.core.sorting import default_sort_key
  from sympy.core.evalf import DEFAULT_MAXPREC, PrecisionExhausted
  from sympy.core.logic import fuzzy_and, fuzzy_or
  from sympy.core.numbers import Float
  from sympy.core.sympify import _sympify
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.polys import roots, CRootOf, ZZ, QQ, EX
  from sympy.polys.matrices import DomainMatrix
  from sympy.polys.matrices.eigen import dom_eigenvects, dom_eigenvects_to_sympy
  from sympy.polys.polytools import gcd
  from .exceptions import MatrixError, NonSquareMatrixError
  from .determinant import _find_reasonable_pivot
  from .utilities import _iszero, _simplify
label_desc: Use image node_id 29 for calling a global function with example usage: _left_eigenvects(M) and returns: unknown