首页 > 解决方案 > Python旋转子数组内的元素

问题描述

我正在尝试按给定顺序创建两个子数组,在这种情况下,我有两个整数 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)]]

想象一下a10并且b1输出是:

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

但是我怎样才能反转每个子数组的b时间呢?

我想要的输出;

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

标签: pythonarrayslist-comprehension

解决方案


您可以通过切片来旋转内部列表:

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


for x in range(1, 6):
    print(x, '>>', reorder(10, x))

输出:

(1, '>>', [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
(2, '>>', [[4, 0, 1, 2, 3], [9, 5, 6, 7, 8]])
(3, '>>', [[3, 4, 0, 1, 2], [8, 9, 5, 6, 7]])
(4, '>>', [[4, 0, 1, 2, 3], [9, 5, 6, 7, 8]])
(5, '>>', [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])

推荐阅读