Python 旋转数组元素
在声明数组之后,将数组元素从某个索引开始旋转,使得第一个元素直到指定的索引处于数组的最后,靠着数组的倒数第二个元素。
让我们通过一个输入输出的情景来讨论这个问题。
输入输出情景
考虑一个数组arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。
- 我们可以清楚地说初始数组包含10个元素,最后一个元素的索引是9。
-
假设数组经过两次旋转。
-
在这种情况下,前两个元素被放在最后一个元素“ 10 ”之后。
-
首先,“ 1 ”元素放在10之后,并且放置了“ 1 ”元素之后,“ 2 ”元素将被放置在1后面。
因此,结果数组将是arr = [3, 4, 5, 6, 7, 8, 9, 10, 1, 2]。
示例
在这个示例中,我们将讨论按一定的旋转次数同时旋转数组的某些元素的过程。构建程序的步骤如下:
- 声明一个函数或方法来处理数组元素的旋转。
(注意方法的参数必须包含数组,数组的最大大小和用户需要的旋转次数)
- 在方法内部,使用一个名为“temp”的变量来存储旋转后的数组元素。
-
利用变量“i”和一个循环,迭代数组的元素(直到索引等于旋转次数),将元素依次附加到“temp”数组中。
-
考虑另一个循环,并相应地存储从下一个索引开始的元素。
-
现在,将数组“arr”与数组“temp”合并,并将值存储在数组“arr”中。
def rotate_elements(arr, max, no_of_elements):
temp = []
i = 0
while (i < no_of_elements):
temp.append(arr[i])
i += 1
i = 0
while (no_of_elements < max):
arr[i] = arr[no_of_elements]
i = i + 1
no_of_elements = no_of_elements + 1
arr[:] = arr[: i] + temp
return arr
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("The array before rotation is: ", end =' ')
print(arr)
print("The array after rotation is: ", end=' ')
max_size = len(arr)
print(rotate_elements(arr, max_size, 2))
输出
上述程序的输出如下:
The array before rotation is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
The array after rotation is: [3, 4, 5, 6, 7, 8, 9, 10, 1, 2]
示例
在此示例中,我们将讨论将数组的某些元素(逐个)按照一定的旋转次数进行旋转的过程。构建程序所需遵循的步骤如下:
- 声明两个函数。第一个函数将用于迭代所有元素,直到达到总旋转次数,并同时调用第二个方法,以便在迭代元素后立即允许元素进行旋转。
(请注意方法的参数必须包括数组、数组的最大长度以及用户要求的旋转次数)
- 在第二个方法中,使用名为“ temp ”的空数组来存储旋转后的数组元素。
-
在变量“ i ”和循环的帮助下,迭代从索引0到最后一个元素的最后一个索引之间的所有元素,并逐个旋转数组的元素。
-
在旋转后打印数组“ arr ”中的元素。
def rotate_elements(arr, no_of_elements, max):
for i in range(no_of_elements):
rotate_one_by_one(arr, max)
def rotate_one_by_one(arr, max):
temp = arr[0]
for i in range(max-1):
arr[i] = arr[i+1]
arr[max-1] = temp
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("The array before rotation: ")
print(arr)
rotate_elements(arr, 2, 10)
print("The array after rotation: ")
print(arr)
输出
上述程序的输出如下 –
The array before rotation:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
The array after rotation:
[3, 4, 5, 6, 7, 8, 9, 10, 1, 2]
结论
我们可以明显观察到上述两个程序产生的输出完全相等。程序之间唯一的区别是程序体内所遵循的过程和使用的方法。在第一个程序中,通过使用外部数组,元素一起旋转在单个方法内实现。而在第二个程序中,通过调用一个方法,连续使用两个不同的方法旋转元素。通过这种方式,数组的元素可以被旋转。