Đảo ngược một mảng là thao tác sắp xếp lại các phần tử của mảng theo thứ tự ngược lại. Có nhiều phương pháp và cách tiếp cận để đảo ngược một mảng trong Python, bao gồm các phương pháp reverse() và reversed().
Trong Python, array không phải là một trong những data types tích hợp sẵn. Tuy nhiên, thư viện chuẩn của Python có mô-đun array giúp chúng ta tạo ra một tập hợp đồng nhất của string , kiểu số nguyên hoặc số thực.
Để đảo ngược một mảng, hãy sử dụng các phương pháp sau −
Phép cắt (Slicing) là quá trình trích xuất một phần của mảng trong các chỉ số đã chỉ định. Trong Python, nếu chúng ta sử dụng phép cắt dưới dạng [::-1] , thì nó sẽ hiển thị một mảng mới bằng cách đảo ngược mảng gốc.
Trong quá trình này, trình thông dịch bắt đầu từ cuối và lùi lại 1 bước cho đến khi nó đạt đến đầu của mảng. Kết quả là, chúng ta có một bản sao ngược của mảng gốc.
Ví dụ dưới đây minh họa cách sử dụng thao tác cắt (slicing) để đảo ngược một mảng trong Python.
import array as arr # creating array numericArray = arr.array('i', [88, 99, 77, 55, 66]) print("Original array:", numericArray) revArray = numericArray[::-1] print("Reversed array:",revArray)
Khi bạn chạy đoạn mã, nó sẽ tạo ra đầu ra sau −
Original array: array('i', [88, 99, 77, 55, 66]) Reversed array: array('i', [66, 55, 77, 99, 88])
Chúng ta cũng có thể đảo ngược chuỗi số trong một mảng bằng cách sử dụng reverse() method của lớp list. Ở đây, list là một kiểu dữ liệu tích hợp sẵn trong Python.
Vì phương thức reverse() là một phương thức của lớp danh sách (list class), nên chúng ta không thể sử dụng trực tiếp nó để đảo ngược một mảng được tạo ra thông qua mô-đun array của Python. Chúng ta phải chuyển đầu tiên nội dung của mảng sang danh sách bằng phương thức tolist() của lớp array, sau đó gọi phương thức reverse() và cuối cùng, khi chúng ta chuyển đổi danh sách trở lại thành mảng, chúng ta sẽ có mảng với thứ tự bị đảo ngược.
Ở đây, chúng ta sẽ xem cách sử dụng phương thức reverse() để đảo ngược một mảng trong Python.
import array as arr # creating an array numericArray = arr.array('i', [10,5,15,4,6,20,9]) print("Array before reversing:", numericArray) # converting the array into list newArray = numericArray.tolist() # reversing the list newArray.reverse() # creating a new array from reversed list revArray = arr.array('i', newArray) print ("Array after reversing:",revArray)
Nó sẽ tạo ra output −
Array before reversing: array('i', [10, 5, 15, 4, 6, 20, 9]) Array after reversing: array('i', [9, 20, 6, 4, 15, 5, 10])
Phương thức reversed() là một cách khác để đảo ngược các phần tử của một mảng. Nó chấp nhận một mảng làm giá trị tham số và trả về một đối tượng iterator hiển thị các phần tử của mảng theo thứ tự ngược lại.
Trong ví dụ này, chúng ta đang sử dụng phương thức reversed() để đảo ngược một mảng trong Python.
import array as arr # creating an array numericArray = arr.array('i', [12, 10, 14, 16, 20, 18]) print("Array before reversing:", numericArray) # reversing the array newArray = list(reversed(numericArray)) # creating a new array from reversed list revArray = arr.array('i', newArray) print ("Array after reversing:",revArray)
Khi thực thi đoạn mã trên, nó sẽ hiển thị đầu ra sau:
Array before reversing: array('i', [12, 10, 14, 16, 20, 18]) Array after reversing: array('i', [18, 20, 16, 14, 10, 12])
Để đảo ngược một mảng bằng cách sử dụng for loop , trước tiên chúng ta duyệt các phần tử của mảng gốc theo thứ tự ngược lại và sau đó thêm mỗi phần tử vào một mảng mới.
Ví dụ dưới đây cho thấy cách đảo ngược một mảng trong Python bằng cách sử dụng vòng lặp for.
import array as arr a = arr.array('i', [10,5,15,4,6,20,9]) b = arr.array('i') for i in range(len(a)-1, -1, -1): b.append(a[i]) print(a) print(b)
Nó sẽ tạo ra output −
array('i', [10, 5, 15, 4, 6, 20, 9]) array('i', [9, 20, 6, 4, 15, 5, 10])