Python通过列表理解将元素在子数组中旋转x次

问题描述 投票:0回答:1

我正在尝试以给定的顺序创建两个子数组,在这种情况下,我有两个整数a和b a代表子数组范围的值,b代表需要多少次旋转。

我创建了这样的子数组;

def reorder(a,b):
   return [[i for i in range(0, a//2)]] + [[f for f in range(a//2, a)]]

想象a10b1,输出是:

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

但是我如何将每个子数组反转b次?

我想要的输出;

[[4, 0, 1, 2, 3], [9, 5, 6, 7, 8]]
python arrays list-comprehension
1个回答
0
投票

您可以弹出每个子数组的最后一个元素b次,并将其插入开头:

def reorder(a,b):
    suba = [i for i in range(0, a//2)] 
    subb = [f for f in range(a//2, a)]
    for i in range(b):
        suba = [suba.pop(-1)]+suba
        subb = [subb.pop(-1)]+subb
    return [suba,subb]

reorder(10,1)
Out[1]: [[4, 0, 1, 2, 3], [9, 5, 6, 7, 8]]
© www.soinside.com 2019 - 2024. All rights reserved.