Xoay mảng trái phải 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ả về a[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ả về a[b. len[a]] + a[0. b]
    print[rotLeft[[1,2,3,4,5,6,7],2]]
    print[rotLeft[[12,

Để 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

Khi được yêu cầu xoay phải các phần tử của danh sách, các phần tử được lặp lại và phần tử cuối cùng được gán một giá trị, sau đó các phần tử được lặp lại và một phần tử được hoán đổi

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

Ví dụ

Bản thử trực tiếp

my_list = [31, 42, 13, 34, 85, 0, 99, 1, 3]
n = 3
print["The value of n has been initialized to"]
print[n]
print["The list is :"]
print[my_list]

print["List is being right rotated by 3 elements..."]
for i in range[0, n]:
   last_elem = my_list[len[my_list]-1]

   for j in range[len[my_list]-1, -1, -1]:
      my_list[j] = my_list[j-1]

   my_list[0] = last_elem

print[]

print["List after right rotation is : "]
for i in range[0, len[my_list]]:
   print[my_list[i]]

đầu ra

The value of n has been initialized to
3
The list is :
[31, 42, 13, 34, 85, 0, 99, 1, 3]
List is being right rotated by 3 elements...
List after right rotation is :
99
1
3
31
42
13
34
85
0

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ị của n được xác định và được hiển thị trên bàn điều khiển

  • Danh sách được lặp lại và phần tử cuối cùng được gán một giá trị

  • Danh sách được lặp lại nhiều lần và kích thước bước được xác định là -1 và nó được chỉ định để đi đến phần tử cuối cùng của 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,

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

    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

    def rotateArray[a,d]:
        temp = []
        n=len[a]
        for i in range[d,n]:
            temp.append[a[i]]
        i = 0
        for i in range [0,d]:
            temp.append[a[i]]
        a=temp.copy[]
        return a
     
    arr = [1, 2, 3, 4, 5, 6, 7]
    print["Array after left rotation is: ", end=' ']
    print[rotateArray[arr, 2]]


    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

    ________số 8


    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

    Xoay trái và phải của mảng là gì?

    Xoay mảng đơn giản có nghĩa là di chuyển các phần tử mảng sang trái hoặc phải của mảng theo các vị trí đã chỉ định . Một mảng có thể được xoay sang trái [theo chiều kim đồng hồ] hoặc sang phải [ngược chiều kim đồng hồ] theo số vị trí nhất định.

    Xoay trái của một mảng là gì?

    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. This process will be followed for a specified number of times.

Chủ Đề