Эффективный способ повернуть список в Python

Что самый эффективный путь состоит в том, чтобы повернуть список в Python? Прямо сейчас у меня есть что-то вроде этого:

>>> def rotate(l, n):
...     return l[n:] + l[:n]
... 
>>> l = [1,2,3,4]
>>> rotate(l,1)
[2, 3, 4, 1]
>>> rotate(l,2)
[3, 4, 1, 2]
>>> rotate(l,0)
[1, 2, 3, 4]
>>> rotate(l,-1)
[4, 1, 2, 3]

Существует ли лучший путь?

244
задан jameshfisher 3 August 2019 в 08:08
поделиться

1 ответ

def solution(A, K):
    if len(A) == 0:
        return A

    K = K % len(A)

    return A[-K:] + A[:-K]

# use case
A = [1, 2, 3, 4, 5, 6]
K = 3
print(solution(A, K))

, Например, учитывая

A = [3, 8, 9, 7, 6]
K = 3

функция должна возвратиться [9, 7, 6, 3, 8]. Три вращения были сделаны:

[3, 8, 9, 7, 6] -> [6, 3, 8, 9, 7]
[6, 3, 8, 9, 7] -> [7, 6, 3, 8, 9]
[7, 6, 3, 8, 9] -> [9, 7, 6, 3, 8]

Для другого примера, учитывая [1 110]

A = [0, 0, 0]
K = 1

функция должна возвратиться [0, 0, 0]

, Учитывая [1 112]

A = [1, 2, 3, 4]
K = 4

, функция должна возвратиться [1, 2, 3, 4]

0
ответ дан 23 November 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: