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]

結論

我們可以清楚地觀察到,上面討論的兩個程式生成的輸出完全相同。程式之間的唯一區別是程式體中遵循的過程和使用的方法。在第一個程式中,在一個方法內,使用外部陣列將元素整體旋轉。在第二個程式中,使用兩個不同的方法來透過呼叫方法逐個旋轉元素。這樣,就可以旋轉陣列的元素。

更新於:2023年5月8日

885 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告