class_docstr: The container for a list of mutables.
  
  :class:`MutableList` will be the cartesian product of all the mutables in the list.
  
  It can be indexed / sliced like a regular Python list,
  but it also looks like a :class:`nni.mutable.Mutable`,
  which supports :meth:`freeze`, :meth:`contains`, and :meth:`simplify`.
  
  Parameters
  ----------
  mutables
      A list of mutables.
      It's not encouraged to put non-mutable objects in the list,
      but it's allowed. In that case, the non-mutable objects will be simply ignored
      in all mutable-related operations (e.g., :meth:`simplify`).
  
  Notes
  -----
  To nest a :class:`MutableList` inside another :class:`MutableList`,
  the inner list must be wrapped in a :class:`MutableList`.
  Otherwise, the mutables inside in the inner list won't be recognized as mutables.
  For example::
  
      >>> a = [Categorical([1, 2]), Categorical([3, 4])]
      >>> b = Categorical([5, 6])
      >>> lst = MutableList([MutableList(a), b])
      >>> lst.random()
      [[1, 4], 6]
  
  However, this might NOT be what you expect::
  
      >>> lst = MutableList([a, b])
      >>> lst.random()
      [[Categorical([1, 2], label='global/1'), Categorical([3, 4], label='global/2')], 6]
  
  Examples
  --------
  >>> from nni.mutable import *
  >>> space = MutableList([Categorical(['a', 'b']), Categorical(['c', 'd'])])
  >>> space.random()
  ['b', 'd']
code: def __iter__(self) -> Iterator[Mutable]:
      return iter(self.mutables)
  
imports: from __future__ import annotations
  from typing import Any, Iterable, Iterator, Mapping, Callable, Sequence
  from .exception import SampleValidationError
  from .mutable import Mutable, Sample, LabeledMutable, _mutable_equal
label_desc: Use image node_id 11 for calling the MutableList obj's underlying member method code with example usage: obj.__iter__() and returns: iter