首页 > 解决方案 > 给定移动次数的python中的数组旋转

问题描述

给定一个长度为 n 且旋转 k 的数组来执行。我已经尝试过了,但出现错误

shifted = []
size , rotation = [int(size)for size in input().split()]
arr= [int(size) for size in input().split()]
for loop in range(len(arr)):
  indx = (loop+rotation)%len(arr)
  shifted[indx:indx] = arr[loop]

print(shifted)

我收到了这个错误:shifted[indx:indx] = arr[loop] TypeError: can only assign an iterable

标签: pythonpython-3.x

解决方案


假设左旋转和输入:

lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
k = 3
n = 10

如果您不需要就地执行此操作,则可以执行以下操作:

result = lst[k:] + lst[:k] # [3, 4, 5, 6, 7, 8, 9, 0, 1, 2]

deque也是一种选择:

from collections import deque
lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = deque(lst)
result.rotate(-3) # Rotate 3 to the left
print(list(result))

推荐阅读