code: def _resolve_looppart(parts, assign_path, context):
      
      assign_path = assign_path[:]
      index = assign_path.pop(0)
      for part in parts:
          if part is util.Uninferable:
              continue
          if not hasattr(part, "itered"):
              continue
          try:
              itered = part.itered()
          except TypeError:
              continue
          for stmt in itered:
              index_node = nodes.Const(index)
              try:
                  assigned = stmt.getitem(index_node, context)
              except (
                  AttributeError,
                  exceptions.AstroidTypeError,
                  exceptions.AstroidIndexError,
              ):
                  continue
              if not assign_path:
                  # we achieved to resolved the assignment path,
                  # don't infer the last part
                  yield assigned
              elif assigned is util.Uninferable:
                  break
              else:
                  # we are not yet on the last part of the path
                  # search on each possibly inferred value
                  try:
                      yield from _resolve_looppart(
                          assigned.infer(context), assign_path, context
                      )
                  except exceptions.InferenceError:
                      break
docs: recursive function to resolve multiple assignments on loops