@classmethod
def _low_high_iter(cls, observation_space, low_bound, high_bound):
    lows = observation_space.low
    highs = observation_space.high
    for i in range(len(lows)):
        low = lows[i]
        if (low_bound is not None):
            _low_bound = (low_bound if (not isinstance(low_bound, list)) else low_bound[i])
            low = (low if (_low_bound is None) else max(low, _low_bound))
        high = highs[i]
        if (high_bound is not None):
            _high_bound = (high_bound if (not isinstance(high_bound, list)) else high_bound[i])
            high = (high if (_high_bound is None) else min(high, _high_bound))
        (yield (i, low, high))
@classmethod
def _low_high_iter(cls, observation_space, low_bound, high_bound):
    lows = observation_space.low
    highs = observation_space.high
    for i in range(len(lows)):
        low = lows[i]
        if (low_bound is not None):
            _low_bound = (low_bound if (not isinstance(low_bound, list)) else low_bound[i])
            low = (low if (_low_bound is None) else max(low, _low_bound))
        high = highs[i]
        if (high_bound is not None):
            _high_bound = (high_bound if (not isinstance(high_bound, list)) else high_bound[i])
            high = (high if (_high_bound is None) else min(high, _high_bound))
        (yield (i, low, high))