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ả lại một [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ả 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àyPhươ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,
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
________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