首页 > 解决方案 > 有没有更简单的方法在 python 中将数组向左移动?

问题描述

我在 python 中做了一个简单的问题,即使用 python 3.0 将数组向左移动来解决我遇到的问题,我只需要数组的长度为 3。例如,如果我的数组[1, 2, 3] 在班次之后,它应该读取[2,3,1]. 我的代码有效,但我想知道是否有人可以指导我提高它的效率,并尽可能对任何数组长度进行操作。我的问题是我不认为我知道如何一次移动所有元素,而是在第一个元素之后移动所有元素,然后在循环之后将第一个元素附加到数组中。

def rotate_left3(nums):
    shifted_nums=[]
    i=len(nums)
    for j in range(i):
        shifted_nums=nums[j-1:]
    var=nums[0]
    shifted_nums.append(var)
    return shifted_nums

标签: python-3.xlist

解决方案


最快的方法是使用collections.deque. 它支持两端的快速追加和弹出,并有一个调用方法rotate来实现你想要的:

>>> from collections import deque
>>> de = deque([1, 2, 3, 4])
>>> de
deque([1, 2, 3, 4])
>>> de.rotate(2)
>>> de
deque([3, 4, 1, 2])
>>> de.rotate(-2)
>>> de
deque([1, 2, 3, 4])

推荐阅读