1. 程式人生 > >Python序列迴圈移位的3種方法

Python序列迴圈移位的3種方法

第一種方法:特點是直接、容易理解,缺點是速度慢,只能實現迴圈左移。

def demo(lst, k):

    temp = lst[:]

    for i in range(k):

        temp.append(temp.pop(0))

    return temp

第二種方法:特點是速度快,並且自適應迴圈左移(k>0)和右移(k<0),缺點是涉及到演算法,不容易理解。

def demo(lst, k):

    x = lst[:k]

    x.reverse()

    y = lst[k:]

    y.reverse()

    r = x+y

    return list(reversed(r))

最Pythonic的終極方法:使用切片,簡單易理解,速度最快,可同時實現迴圈左移(k>0)和右移(k<0)。

def demo(lst, k):

    return lst[k:] + lst[:k]