在python中将list的元素向左移动指定的移位量



如何创建一个函数,将原始列表中的每个值复制到新列表中,其中新列表中每个值的位置向左移动指定的偏移量

例如[2,3,4,5]将变为[4,5,2,3]

如何在不使用任何内置函数的情况下创建此函数?

解决方案

a = [2, 3, 4, 5]

def shift_left(arr: list, amount: int) -> list:
amount %= len(arr)  # (1)
return arr[amount:] + arr[:amount]  # (2)

for i in range(len(a) * -2, len(a) * 2):
print(i, shift_left(a, i))

输出:

-8 [2, 3, 4, 5]
-7 [3, 4, 5, 2]
-6 [4, 5, 2, 3]
-5 [5, 2, 3, 4]
-4 [2, 3, 4, 5]
-3 [3, 4, 5, 2]
-2 [4, 5, 2, 3]
-1 [5, 2, 3, 4]
0 [2, 3, 4, 5]
1 [3, 4, 5, 2]
2 [4, 5, 2, 3]
3 [5, 2, 3, 4]
4 [2, 3, 4, 5]
5 [3, 4, 5, 2]
6 [4, 5, 2, 3]
7 [5, 2, 3, 4]

解释

  1. amount %= len(arr):归一化数组长度内的数量
  2. arr[amount:] + arr[:amount]:将数组分为两部分并连接

最新更新