📜  python 旋转列表 - Python (1)

📅  最后修改于: 2023-12-03 15:34:12.369000             🧑  作者: Mango

Python - 旋转列表

在Python中,可以使用多种方法对列表进行旋转操作。本文将介绍其中的一些方法。

方法一 - 使用列表切片

使用列表切片可以将列表的前面部分和后面部分分开,然后交换它们的位置,从而实现列表的旋转。

def rotate_list(arr, k):
    # 计算旋转后的下标
    k %= len(arr)
    # 将列表的前面部分和后面部分分开
    left = arr[:len(arr)-k]
    right = arr[len(arr)-k:]
    # 交换左右两个部分的位置
    return right + left

使用该函数可以将列表 arr 向右旋转 k 个元素:

arr = [1, 2, 3, 4, 5]
k = 2
result = rotate_list(arr, k)
print(result)  # 输出 [4, 5, 1, 2, 3]
方法二 - 使用列表拼接

可以将列表最后的 k 个元素放到列表最前面,然后将前面的元素放到后面,从而实现列表的旋转。

def rotate_list2(arr, k):
    # 计算旋转后的下标
    k %= len(arr)
    # 将列表中最后的 k 个元素放到前面
    arr = arr[len(arr)-k:] + arr[:len(arr)-k]
    return arr

使用该函数可以将列表 arr 向右旋转 k 个元素:

arr = [1, 2, 3, 4, 5]
k = 2
result = rotate_list2(arr, k)
print(result)  # 输出 [4, 5, 1, 2, 3]
方法三 - 使用 collections.deque

可以使用 Python 标准库中的 collections.deque 对象,其可以实现高效的队列和双向队列操作。

from collections import deque

def rotate_list3(arr, k):
    # 计算旋转后的下标
    k %= len(arr)
    # 将列表转换成 deque 对象
    d = deque(arr)
    # 旋转 deque 对象
    d.rotate(k)
    # 将 deque 对象转换成列表
    return list(d)

使用该函数可以将列表 arr 向右旋转 k 个元素:

arr = [1, 2, 3, 4, 5]
k = 2
result = rotate_list3(arr, k)
print(result)  # 输出 [4, 5, 1, 2, 3]

以上三种方法均可实现 Python 中的列表旋转操作。选择哪种方法取决于具体情况下的需求和性能要求。