def _get_results_list(self, apply_goals: bool = False) -> tuple[list[int], list[float]]:
        """Return the results as a tuple of indices and values."""
        values = []
        indices = []
        if not self._objectives:
            # If no objectives, then use the indices of the valid results in no specific order
            indices = [spi for spi, entry in enumerate(self._results) if entry]
            return indices, values

        # NOTE: values array need to be packed but a simple loop thru' each entry could
        # possibly create a jagged array if the number of actual objectives in the signal
        # are different from the expected ones. To circumvent the issue, we use min/max
        # depending on the higher_is_better values for the missing expected objectives
        # to deprioritize that objective while sorting.

        for spi, entry in enumerate(self._results):
            if entry and (not apply_goals or self.meets_goals(spi)):
                result, _ = entry

                v = []
                for name in self._objectives:
                    if name in result:
                        # Values are scaled for comparison such that higher is better for all objectives.
                        v.append(self._multipliers[name] * result[name].value)
                    else:
                        v.append(-sys.maxsize - 1 if self._higher_is_betters[name] else sys.maxsize)

                values.append(v)
                indices.append(spi)

        return indices, values
Return the results as a tuple of indices and values.
olive/search/search_results.py