Solution de Marc

from collections.abc import Iterable

def mid_first_order(n: int) -> Iterable[int]:
    '''
    Return the values in a "mid-first" order.
    >>> list(mid_first_order(4))
    [2, 1, 3, 0]
    >>> list(mid_first_order(5))
    [2, 3, 1, 4, 0]
    >>> list(mid_first_order(6))
    [3, 2, 4, 1, 5, 0]
    '''
    mid = n >> 1

    for i in range(n):
        if i & 1:
            yield mid - ((i + 1) >> 1)
        else:
            yield mid + ((i + 1) >> 1)