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
- Tạo một danh sách trống mới
- 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
- 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[]
- 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ú
- Có nhiều giải pháp khác nhau để xoay bài toán mảng trong python
- Đây là một giải pháp ngắn về độ phức tạp thời gian O[n]
- Theo cách tương tự này, phép quay phải cũng có thể được thực hiện
- 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”
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]
“`Jean nói.
Xin chào, bạn có thể vui lòng giải thích câu trả lời này?
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àyKhi đượ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
- Sử dụng một mảng tạm thời sẽ lưu trữ các phần tử đã dịch chuyển
- 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.