Ротация одного списка первой половины с другой половиной, включая нечетное количество элементов - PullRequest
0 голосов
/ 10 ноября 2018
l = [4,5,7,9,10,12]

def rotation(l,n):
    return l[n:] + l[:n]

print rotation(l,3)

Пусть «l» будет вышеупомянутым списком, с помощью приведенного выше кода я могу повернуть первую половину [4,5,7] с другой половиной [9,10,12], получив желаемый результат [9 , 10, 12, 4, 5, 7]. Однако то, что я пытаюсь сделать, и я не могу понять, это в случае, когда у нас есть нечетное количество элементов. Допустим, l = [4,5,7,8,9,10,12] Я хочу, чтобы нечетное число, находящееся посередине, в данном случае [8], оставалось посередине, а первая половина вращалась с последняя половина, получая выход в этом случае [9,10,12,8,4,5,7]

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018
def rotation(l,n):
    if len(l) % 2 == 0:
        return l[n:] + l[:n]
    else:
        return l[-n:] + [l[n]] + l[:n]
0 голосов
/ 10 ноября 2018

Если я пойму, это может сработать.

Но я не вижу необходимости передавать второй параметр методу (если вы не ищете что-то другое).

def rotation(l):
    size = len(l)
    n = size // 2
    res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
    return res

print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...