Cách thực hiện xoay trái mảng trong Python

Trong hướng dẫn này, chúng ta sẽ xem cách xoay một mảng trong Python theo một số phần tử nhất định. Xoay một mảng là một quá trình liên quan đến việc dịch chuyển các phần tử theo n vị trí. Sự dịch chuyển các phần tử sang trái này được gọi là phép quay trái và dịch chuyển sang phải được gọi là phép quay phải

Các bước xoay mảng trái trong Python

  1. Tạo một danh sách trống mới
  2. Nối các phần tử mảng vào danh sách mới, để lại các phần tử phải xoay. Ví dụ: nếu mảng phải được xoay 2, hãy để lại hai phần tử mảng đầu tiên
  3. Bây giờ hãy thêm các phần tử còn lại trong mảng vào danh sách bằng cách sử dụng hàm Extend()
  4. Mảng được xoay

Mã giả cho các bước trên

rotLeft(mảng, num_of_elements)

b = []

bắt đầu

cho i = num_of_elements thành i = len(arr)

thêm phần tử vào b

thêm các phần tử còn lại trong arr vào b

 

 

def rotLeft(a, d):
    b = []
    for i in range(-d,len(a)):
        b.append(a[i])
    b.extend(a[0:d])
    return b


rotLeft([1,2,3,4,5,6,7],2)
rotLeft([12,45,20,11,10,56],1)
Output:
[3, 4, 5, 6, 7, 1, 2]
[45, 20, 11, 10, 56, 12]

Ở đây, n phần tử đầu tiên của mảng đã di chuyển về cuối trong cả hai trường hợp

Ghi chú

  1. Có nhiều giải pháp khác nhau để xoay bài toán mảng trong python
  2. Đây là một giải pháp ngắn về độ phức tạp thời gian O(n)
  3. Theo cách tương tự này, phép quay phải cũng có thể được thực hiện
  4. Thay đổi duy nhất trong xoay phải là các phần tử từ cuối cùng được chuyển lên phía trước

Cũng đọc. Làm cách nào để triển khai Cây phân đoạn trong Python?

3 phản hồi cho “Cách xoay mảng trong Python”

  1. chris nói.

    đoạn mã trên không chính xác, vì kích thước của mảng trả về luôn >= mảng ban đầu

    Một giải pháp đơn giản hơn là

    “`
    def rotLeft(a, b)
    trả lại một [b. len(a)] + a[0. b]
    “`

  2. Jean nói.

    Xin chào, bạn có thể vui lòng giải thích câu trả lời này?

  3. Sumeet Upendra Singh nói.

    def rotLeft(a, b)
    trả lại một [b. len(a)] + a[0. b]
    in(rotLeft([1,2,3,4,5,6,7],2))
    in(rotLeft([12,45,20,11,10,56],1))

Để lại một câu trả lời

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *

Nhận xét *

Tên *

Email *

Vui lòng bật JavaScript để gửi biểu mẫu này

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)

Khi cần xoay trái các phần tử của một mảng, mảng có thể được lặp đi lặp lại và tùy thuộc vào số lần xoay trái, chỉ số có thể được tăng lên nhiều lần

Dưới đây là một minh chứng tương tự -

Thí dụ

Bản thử trực tiếp

my_list = [11, 12, 23, 34, 65]
n = 3

print("The list is : ")
for i in range(0, len(my_list)):
   print(my_list[i])

for i in range(0, n):
   first_elem = my_list[0]

   for j in range(0, len(my_list)-1):
      my_list[j] = my_list[j+1]

   my_list[len(my_list)-1] = first_elem

print()

print("Array after left rotating is : ")
for i in range(0, len(my_list)):
   print(my_list[i])

đầu ra

The list is :
11
12
23
34
65

Array after left rotating is :
34
65
11
12
23

Giải trình

  • Một danh sách được xác định và được hiển thị trên bảng điều khiển

  • Giá trị cho phép quay trái được xác định

  • Danh sách được lặp lại và chỉ mục của các phần tử trong danh sách được tăng lên và được gán cho chỉ mục trước đó của cùng một danh sách

    Trong hướng dẫn này, chúng ta sẽ học cách viết một hàm cho Xoay mảng. Người dùng sẽ cung cấp một đầu vào d mà theo đó các phần tử của mảng sẽ được xoay

    Mảng Python là cấu trúc dữ liệu lưu trữ dữ liệu đồng nhất. Mảng lưu trữ các đối tượng có cùng kiểu dữ liệu. Mảng có thể thay đổi, nghĩa là dữ liệu trong một mảng có thể được thay đổi và lặp đi lặp lại, nghĩa là mỗi phần tử trong một mảng có thể được truy cập từng phần tử một

    Giả sử một mảng a[ ] có các phần tử sau,

    Cách thực hiện xoay trái mảng trong Python

    Nó phải được xoay 2 thì mảng kết quả sẽ là,

    Cách thực hiện xoay trái mảng trong Python

    Chương trình của chúng tôi sẽ cung cấp đầu ra như sau

    Đầu vào-[1, 2, 3, 4, 5, 6]

    Mảng xoay đầu ra là [3, 4, 5, 6, 1, 2]

    Để thực hiện nhiệm vụ này, chúng tôi sẽ làm theo các phương pháp sau

    1. Sử dụng một mảng tạm thời sẽ lưu trữ các phần tử đã dịch chuyển
    2. Cắt mảng

    Cách tiếp cận 1. Bằng cách sử dụng một mảng tạm thời

    Trong phương pháp này, chúng tôi sẽ khai báo một mảng tạm thời sẽ lưu trữ các phần tử mảng theo thứ tự thay đổi

    Input arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2, n =7
    
    1) Store all the elements in the index range d to n in a temp array
       temp[] = [3, 4, 5, 6, 7]
    2) Add all the elements in the index range 0 to d in the temp array
       arr[] = [3, 4, 5, 6, 7, 1, 2]
    3) Copy the temp array to arr[]
       arr[] = [3, 4, 5, 6, 7, 1, 2]

    thuật toán

    Bước 1- Định nghĩa hàm xoay mảng

    Bước 2- Khai báo biến tạm thời

    Bước 3- Sử dụng len() để tính độ dài của mảng và lưu nó vào một biến

    Bước 4- Chạy một vòng lặp từ d đến n và lưu trữ các phần tử tại mỗi chỉ mục trong mảng tạm thời

    Bước 5- Chạy một vòng lặp khác để thêm các phần tử còn lại vào mảng tạm thời

    Bước 6- Sao chép mảng tạm thời sang mảng ban đầu

    Bước 7- Trả về mảng

    Chương trình Python 1

    Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên

    ________số 8_______


    Mảng sau khi xoay trái là. [3, 4, 5, 6, 7, 1, 2]

    Cách tiếp cận 2. cắt lát

    Trong cách tiếp cận này, chúng ta sẽ sử dụng khái niệm cắt lát. Vì mảng là một kiểu danh sách với các phần tử cùng kiểu dữ liệu nên chúng ta có thể sử dụng khái niệm cắt danh sách ở đây. Thông qua việc cắt, chúng ta có thể truy cập bất kỳ phần nào của mảng

    thuật toán

    Bước 1- Định nghĩa hàm xoay phần tử trong danh sách mảng

    Bước 2- Xác định độ dài của một mảng bằng len()

    Bước 3- Sử dụng toán tử nối (. ) để lưu trữ các phần tử từ d đến n và 0 đến d

    Bước 4- Sử dụng dấu (+) để nối cả hai mảng

    Bước 5- Trả về mảng

    Chương trình Python 2

    Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên

    # List slicing approch to rotate the array
    def rotateArray(a,d):
        n=len(a)
        a[:]=a[d:n]+a[0:d]
        return a
    
    arr = [1, 2, 3, 4, 5, 6]
    
    print("Rotated list is")
    print(rotateArray(arr,2)) 


    Danh sách xoay là
    [3, 4, 5, 6, 1, 2]

    Phần kết luận

    Trong hướng dẫn này, chúng ta đã học được hai cách tiếp cận mà chúng ta có thể thực hiện để xoay các phần tử trong một mảng. Chúng tôi đã sử dụng khái niệm cắt lát trong hướng dẫn của mình. Chúng ta cũng có thể khai báo một mảng tạm thời sẽ lưu trữ các phần tử theo thứ tự đã dịch chuyển. Để thêm dữ liệu vào mảng tạm thời, chúng tôi đã sử dụng append() và để sao chép mảng tạm thời vào mảng ban đầu, chúng tôi đã sử dụng copy() trong chương trình của mình