Xoay mảng Python

Phương pháp  1. Mã trong Python

#Write a program for array rotation in Python

# Python3 program to rotate an array by
def leftRotate(arr, d, n):
    for i in range(d):
        leftRotatebyOne(arr, n)
 
# Function to left Rotate arr[] of size n by 1*/
def leftRotatebyOne(arr, n):
    temp = arr[0]
    for i in range(n-1):
        arr[i] = arr[i + 1]
    arr[n-1] = temp
         
 
# utility function to print an array */
def printArray(arr, size):
    for i in range(size):
        print ("% d"% arr[i], end =" ")
 
  
# Driver program to test above functions */
arr = [10, 20, 30, 40, 50, 60, 70]
leftRotate(arr, 2, 7)
printArray(arr, 7)

Bài viết này sẽ giải thích cách dịch chuyển hoặc xoay một mảng theo hướng trái hoặc phải trong Python. Xoay một mảng có nghĩa là chúng ta di chuyển hoặc dịch chuyển từng giá trị của mảng về phía bên trái hoặc bên phải của n vị trí. Và các phần tử bên phải hoặc bên trái di chuyển đến đầu kia của mảng

Chúng ta có thể dịch chuyển hoặc xoay một mảng trong Python bằng các phương thức khác nhau được giải thích bên dưới

Dịch chuyển mảng trong Python bằng Mô-đun collections

Chúng ta có thể sử dụng phương thức deque.rotate(n) của mô-đun collections để xoay một mảng trong Python. Phương thức deque.rotate(n) xoay đối tượng lớp

[5, 6, 1, 2, 3, 4]
[2, 3, 4, 5, 6, 1]
1 n vị trí, trong đó dấu của n cho biết nên xoay đối tượng lớp
[5, 6, 1, 2, 3, 4]
[2, 3, 4, 5, 6, 1]
1 theo hướng trái hay phải

Nếu giá trị của n là dương, thì đầu vào sẽ được xoay từ trái sang phải và nếu n là âm, đầu vào sẽ được xoay từ phải sang trái. Đoạn mã dưới đây trình bày cách xoay một mảng bằng phương thức deque.rotate(n) trong Python

from collections import deque

myarray = deque([1, 2, 3, 4, 5, 6])
myarray.rotate(2) #rotate right
print(list(myarray))
myarray.rotate(-3) #rotate left
print(list(myarray))

đầu ra

[5, 6, 1, 2, 3, 4]
[2, 3, 4, 5, 6, 1]

Dịch chuyển mảng trong Python bằng phương pháp [5, 6, 1, 2, 3, 4] [2, 3, 4, 5, 6, 1] 8

Phương thức

[5, 6, 1, 2, 3, 4]
[2, 3, 4, 5, 6, 1]
9 lấy đầu vào là giá trị
import numpy as np

myarray = np.array([1, 2, 3, 4, 5, 6])
newarray = np.roll(myarray, 2) #rotate right
print(newarray)
newarray =np.roll(myarray, -2) #rotate left
print(newarray)
0 và xoay nó đến vị trí bằng với giá trị của giá trị
import numpy as np

myarray = np.array([1, 2, 3, 4, 5, 6])
newarray = np.roll(myarray, 2) #rotate right
print(newarray)
newarray =np.roll(myarray, -2) #rotate left
print(newarray)
1. Nếu
import numpy as np

myarray = np.array([1, 2, 3, 4, 5, 6])
newarray = np.roll(myarray, 2) #rotate right
print(newarray)
newarray =np.roll(myarray, -2) #rotate left
print(newarray)
0 là một mảng hai chiều, chúng ta sẽ cần chỉ định trục nào chúng ta cần áp dụng phép xoay;

Cũng giống như phương thức

import numpy as np

myarray = np.array([1, 2, 3, 4, 5, 6])
newarray = np.roll(myarray, 2) #rotate right
print(newarray)
newarray =np.roll(myarray, -2) #rotate left
print(newarray)
4, phương thức
[5, 6, 1, 2, 3, 4]
[2, 3, 4, 5, 6, 1]
8 cũng xoay mảng từ phải sang trái nếu giá trị dương và từ phải sang trái nếu giá trị âm. Đoạn mã ví dụ dưới đây trình bày cách sử dụng tính năng cắt mảng để xoay hoặc dịch chuyển một mảng trong Python

Trong chương trình này, chúng ta cần xoay các phần tử của một mảng về bên trái theo số lần đã chỉ định. Trong phép quay trái, mỗi phần tử của mảng sẽ dịch chuyển sang trái một vị trí và phần tử đầu tiên của mảng sẽ được thêm vào cuối danh sách. Quá trình này sẽ được thực hiện trong một số lần xác định

Xoay mảng Python

Xét mảng trên, nếu n bằng 1 thì tất cả các phần tử của mảng sẽ dịch chuyển sang trái một vị trí sao cho phần tử thứ 2 của mảng sẽ chiếm vị trí thứ nhất, phần tử thứ 3 sẽ dịch chuyển sang vị trí thứ 2, v.v. Phần tử đầu tiên của mảng sẽ được thêm vào phần tử cuối cùng của mảng

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách xoay mảng bằng chương trình Python. Chúng ta sẽ viết một hàm để xoay (arry[], E, K) sẽ được sử dụng để xoay arry[] có kích thước K = 8 bởi E = 4 phần tử

Xoay mảng Python

Ta sẽ được mảng sau khi xoay mảng 4 phần tử

Xoay mảng Python

Các phương pháp xoay mảng

Trong phần này, chúng ta sẽ thảo luận về các phương pháp khác nhau mà người dùng có thể sử dụng để xoay mảng theo yêu cầu của họ

Phương pháp 1. Bằng cách sử dụng mảng tạm thời

Trong phương pháp này, chúng tôi sẽ sử dụng cách tiếp cận sau

Bước 1. Chúng tôi sẽ lưu trữ các phần tử "E" trong một mảng tạm thời

Nhiệt độ[] = [1, 3, 5, 7]

Bước 2. chúng tôi sẽ thay đổi phần còn lại của mảng []

arry[] = [9, 11, 13, 15]

Bước 3. Chúng tôi sẽ lưu trữ các phần tử "E"

arry[] = [9, 11, 13, 15, 1, 3, 5, 7]

Thí dụ

đầu ra

Array after Rotation by 4 elements is: [9, 11, 13, 15, 1, 3, 5, 7]

Trong phương pháp trên

Phương pháp 2. Bằng cách xoay từng yếu tố một

Trong phương pháp này, chúng tôi sẽ sử dụng cách tiếp cận sau

rotate_array1(arry[], E, K)

  • chúng ta sẽ đặt điều kiện "cho" là nếu J bằng 0 và nhỏ hơn E thì hàm rotate_array1 sẽ xoay tất cả các phần tử đi một

Chúng ta phải lưu trữ mảng[0] để xoay từng phần tử trong một biến tạm thời, "temp _1". Sau đó, chúng ta sẽ thêm arry[1] thành arry[0], arry[2] thành arry[1], v.v. Cuối cùng, chúng ta sẽ có temp_1 trên arry[n-1]

Thí dụ

đầu ra

The array after rotation: 
1 3 5 7 9 11 13 15

Trong phương pháp trên

Phương pháp 3. Bằng cách sử dụng thuật toán tung hứng

Trong phương pháp này, chúng ta sẽ chia mảng thành các tập hợp khác nhau thay vì di chuyển từng phần tử một

Khi số tập hợp bằng ước chung lớn nhất của "K" và "E", đoạn mã sẽ sắp xếp các phần tử thành các tập hợp

Nếu ước chung lớn nhất bằng 1 thì các phần tử chỉ chuyển vào một tập hợp. Ở đây, chúng ta sẽ bắt đầu với temp_1 = arry[0], và nó sẽ tiếp tục di chuyển arry[J + E] đến arry[J], và cuối cùng, nó sẽ lưu temp_1 vào đúng vị trí

Hãy xem một ví dụ trong đó, K = 16 và E = 4. Ước chung lớn nhất (G_C_D) = 4

Các bước -

  • Lúc đầu, các phần tử sẽ được chuyển vào tập hợp đầu tiên - như trong sơ đồ sau
    Xoay mảng Python

Sau khi hoàn thành bộ này, arry[] sẽ bằng [15, 12, 13, 14, 19, 16, 17, 18, 23, 20, 21, 22, 11, 23, 24, 25, 26]

  • Sau đó, trong tập thứ hai. arry sẽ là [15, 16, 13, 14, 19, 20, 17, 18, 23, 24, 21, 22, 11, 12, 24, 25, 26]
  • Trong bộ thứ ba. arry sẽ là [15, 16, 17, 14, 19, 20, 21, 18, 23, 24, 25, 11, 12, 13, 26]
  • Cuối cùng, trong tập thứ tư. arry sẽ là [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 11, 12, 13, 14]

Thí dụ

đầu ra

The array after rotation:
[15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 11, 12, 13, 14]

Trong phương pháp trên

Phương pháp 4. Bằng cách sử dụng Cắt lát danh sách

Trong phương pháp này, chúng tôi sẽ sử dụng danh sách cắt để xoay các phần tử của một mảng

Thí dụ

đầu ra

The List is: [11, 12, 13, 14, 15, 16, 17, 18]
The rotated list is: 
[15, 16, 17, 18, 11, 12, 13, 14]

Nếu chúng ta muốn xoay mảng nhiều hơn chiều dài của nó, chúng ta có thể sử dụng phương thức mod

Giả sử mảng mà chúng ta muốn xoay theo "E" có kích thước "K" và "E" lớn hơn "K". Trong trường hợp này, chúng ta phải tính toán (E%K) và sau đó chúng ta có thể xoay theo đầu ra sau khi tính toán mod

Phần kết luận

Trong bài viết này, chúng ta đã thảo luận về cách sử dụng các phương thức khác nhau để xoay mảng đã cho bằng cách sử dụng Python