from typing import Sequence
from typing import List


def inverse_power_scale(data: Sequence[float], power: float) -> List[float]:
    """Scale a sequence of numbers based on the ``inverse_power_scale``.

    The ``inverse_power_scale`` scales the distribution of numbers inversely
    proportional to the ``power_scale``. While the ``power_scale`` places more
    emphasis in scaling the lower values, the ``inverse_power_scale`` places
    more emphasis in scaling the higher values. This is beneficial when one
    wishes to keep the distribution of numbers wide when scaling up.

    :param data: The sequence of floats to scale. The floats must be between
        zero and one, and will also be scaled within that range.
    :param power: A positive float representing the scaling factor. A larger
        number results in scaling the numbers higher. A scaling factor of 1 has
        no effect.
    :return: The sequence of floats after scaling. The floats in the sequence
        remain in the order they were given and the ``data`` is not modified.
    """

    return [1 - (1 - n) ** power for n in data]