Python 旋转数组元素

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]

结论

我们可以明显观察到上述两个程序产生的输出完全相等。程序之间唯一的区别是程序体内所遵循的过程和使用的方法。在第一个程序中,通过使用外部数组,元素一起旋转在单个方法内实现。而在第二个程序中,通过调用一个方法,连续使用两个不同的方法旋转元素。通过这种方式,数组的元素可以被旋转。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程