Làm thế nào để bạn lật dữ liệu trong python?

Mở rộng những gì người khác đã nói, tôi sẽ đưa ra một ví dụ ngắn

Nếu bạn có một mảng 1D

>>> import numpy as np
>>> x = np.arange[4] # array[[0, 1, 2, 3]]
>>> x[::-1] # returns a view
Out[1]: 
array[[3, 2, 1, 0]]

Nhưng nếu bạn đang làm việc với mảng 2D

>>> x = np.arange[10].reshape[2, 5]
>>> x
Out[2]:
array[[[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]]]

>>> x[::-1] # returns a view:
Out[3]: array[[[5, 6, 7, 8, 9],
               [0, 1, 2, 3, 4]]]

Điều này không thực sự đảo ngược Ma trận

nên sử dụng np. lật để thực sự đảo ngược các yếu tố

>>> np.flip[x]
Out[4]: array[[[9, 8, 7, 6, 5],
               [4, 3, 2, 1, 0]]]

Nếu bạn muốn in từng phần tử của ma trận, hãy sử dụng phẳng cùng với lật

>>> for el in np.flip[x].flat:
>>>     print[el, end = ' ']
9 8 7 6 5 4 3 2 1 0

Nếu bạn đã quen thuộc với các ngôn ngữ lập trình khác như C, C++ và Java, bạn phải biết về cấu trúc dữ liệu Array có sẵn. Các ngôn ngữ này cung cấp cơ sở để khai báo và tạo một Mảng bằng cách xác định kích thước bộ nhớ cần thiết. Python không có cấu trúc dữ liệu Mảng dựng sẵn, thay vào đó, nó cung cấp Danh sách. Mảng và Danh sách rất khác nhau. Trong khi mảng có số lượng phần tử xác định, Danh sách có thể điều chỉnh được.  

Đảo ngược một mảng nghĩa là gì?

Có nhiều vấn đề trong đó đảo ngược một mảng có thể được coi là một giải pháp vũ phu tốt hơn bất kỳ phương pháp nào khác. Đôi khi, bạn có thể thấy cần phải xem qua một mảng từ phía sau. Có nhiều tình huống có thể yêu cầu sử dụng mảng đảo ngược trong Lập trình cạnh tranh. Ví dụ, hãy xem xét ví dụ về số Palindrome hoặc in các mẫu đảo ngược

Đảo ngược một mảng theo nghĩa đen chỉ là đảo ngược thứ tự của các phần tử mảng

Ví dụ: - [1,2,3,4]        =>              [4,3,2,1]

Hãy xem hình ảnh bên dưới để xem đảo ngược một mảng trông như thế nào -

Đảo ngược một mảng là một trong những hàm cơ bản khi lập trình và Python làm cho nó dễ dàng hơn rất nhiều

Làm cách nào để khai báo một mảng trong Python?

Trước khi chuyển sang đảo ngược một mảng, hãy xem lại cách chúng ta khai báo một mảng trong Python. Vì Python không cung cấp mảng dựng sẵn nên mô-đun mảng phải được nhập để sử dụng mảng

#import the array module
import array as arr

#initializing array with integers
a = arr.array['i', [1,2,3,4,5]]
print['The array is: ',a]

 

Để khai báo một mảng, chúng ta cũng cần khai báo kiểu dữ liệu mà nó đang lưu trữ. [như ở đây số nguyên được thể hiện bằng 'i']

đầu ra

The array is:  array['i', [1, 2, 3, 4, 5]]

 

Bây giờ, hãy chuyển sang cách đảo ngược một mảng trong Python

Làm cách nào để đảo ngược một mảng trong Python?

Có nhiều phương thức do người dùng định nghĩa và tích hợp sẵn trong Python để đảo ngược một mảng. Việc xác định đúng thuật toán tối ưu, tương thích với mã của bạn, thực sự quan trọng để tránh sai sót và tiết kiệm thời gian. Hãy xem xét chi tiết một số phương pháp

Lưu ý rằng chúng tôi đang xử lý ở đây với Mảng chứ không phải Danh sách

Cách 01] Hoán đổi phần tử

Hãy bắt đầu bằng cách đảo ngược một mảng trong Python mà không sử dụng hàm dựng sẵn. Điều phổ biến nhất bạn có thể làm là hoán đổi các phần tử ở các chỉ số đối lập/đối lập. Để hiểu rõ hơn các bạn xem đoạn code bên dưới

# import the array module
import array as arr

# initializing array with integers
a = arr.array["i", [1, 2, 3, 4, 5]]
print["The array: ", a]
# get size of the array using len[] method
l = len[a]
# going through the array only halfway!!
for i in range[l // 2]:
    # swap the elements
    a[i], a[l - i - 1] = a[l - i - 1], a[i]

print["The reversed array: ", a]

 

Việc hoán đổi làm cho nó khá khó hiểu, phải không??

Tôi hy vọng nó dễ hiểu bây giờ

Hãy nhìn vào đầu ra cho đoạn mã trên.  

The array:  array['i', [1, 2, 3, 4, 5]]
The reversed array:  array['i', [5, 4, 3, 2, 1]]

 

Đây chỉ là một ví dụ về cách đảo ngược một mảng mà không sử dụng bất kỳ phương thức dựng sẵn nào. Sắp tới, bạn sẽ thấy nhiều phương pháp như vậy

Cách 02] Sử dụng phương thức reverse[]

Để đảo ngược một mảng trong Python, bạn có thể sử dụng phương thức reverse[] trực tiếp trên cả danh sách và mảng. Việc sử dụng phương thức reverse[] sẽ hữu ích khi bạn có giới hạn về dung lượng bộ nhớ vì phương thức này thực hiện thao tác trên cùng một bộ nhớ và không yêu cầu thêm dung lượng. Hãy nhớ cách chúng tôi hoán đổi các phần tử ở trên mà không cần thêm bộ nhớ. đảo ngược [] gần như giống nhau

Mật mã

________số 8_______

 

Đây là một trong những phương pháp nhanh nhất để đảo ngược một mảng trong Python. Phương pháp này cũng phù hợp với các mảng dài

đầu ra.  

The array:  array['i', [1, 2, 3, 4, 5]]
The reversed array:  array['i', [5, 4, 3, 2, 1]]

 

Phương thức reverse[] được gọi trên mảng [như một đối tượng gọi một phương thức]

Phương pháp 03] Sử dụng phương thức Reverse[]

Để đảo ngược một mảng, Python cũng cung cấp phương thức Reverse[]. Phương thức Reverse[] không tạo bất kỳ bản sao nào của mảng, cũng như không thực hiện bất kỳ thay đổi nào trong mảng ban đầu. Thay vào đó, nó trả về một trình vòng lặp. Phương pháp này được thực hiện để tạo điều kiện lặp lại ngược lại trên các chuỗi

Kiểm tra mã dưới đây

# import the array module
import array as arr

# initializing array with integers
a = arr.array["i", [1, 2, 3, 4, 5]]
print["The array: ", a]

#passing the array in reversed[]
reversed[a]

print["The reversed array: ", a]

 

đầu ra

The array:  array['i', [1, 2, 3, 4, 5]]
The reversed array:  array['i', [1, 2, 3, 4, 5]]

 

Lưu ý cách không có thay đổi trong mảng ban đầu. Bây giờ, hãy thử lưu trữ [arrayName] đảo ngược vào một biến khác

# import the array module
import array as arr

# initializing array with integers
a = arr.array["i", [1, 2, 3, 4, 5]]
print["The array: ", a]

#passing the array in reversed[]
reversed_a = reversed[a]

print["The reversed array: ", reversed_a]

 

Bạn sẽ khá ngạc nhiên khi thấy đầu ra

The array:  array['i', [1, 2, 3, 4, 5]]
The reversed array:  

 

Thấy. Phương thức Reverse[] trả về một trình vòng lặp, được lưu trữ và in thêm. Để có được một danh sách đảo ngược, tôi. e. một bản sao của mảng ngược của mảng ban đầu, bạn cần áp dụng list[] trên biến Reversed_a. Theo cách gián tiếp, bạn phải chuyển đổi trình vòng lặp thành danh sách để có được mảng bị đảo ngược

The array is:  array['i', [1, 2, 3, 4, 5]]
0

 

Bây giờ, mảng bị đảo ngược được lưu trữ trong Reverse_a và do đó chúng ta có được một mảng bị đảo ngược

The array is:  array['i', [1, 2, 3, 4, 5]]
1

 

Chắc hẳn bạn đang thắc mắc đâu là sự khác biệt giữa phương thức Reverse[] và Reverse[]. Có phải nó chỉ là về một 'd'?

Không. Mặc dù đảo ngược [] và đảo ngược [] thực hiện cùng một chức năng, nhưng chúng khác nhau. Trong khi Reverse[] hoạt động trên cùng một mảng mà không tốn thêm bất kỳ dung lượng bộ nhớ nào, thì Reverse[] cần một mảng mới để lưu trữ một bản sao của mảng đã đảo ngược. Ngoài ra, trong khi đảo ngược [] chỉ đảo ngược mảng ban đầu, thì đảo ngược [] không ảnh hưởng đến mảng ban đầu và trả về một trình vòng lặp, để đảo ngược vòng lặp trên một chuỗi

Lưu ý rằng vì Reverse[] trả về một iterator nên nó chỉ hoạt động với các đối tượng tuần tự. Phương thức reverse[] sẽ không áp dụng được cho set và iterator

Phương pháp 04] Sử dụng Slicing

Đây là phương pháp cơ bản và được sử dụng nhiều nhất để đảo ngược một mảng. Nó không ảnh hưởng đến mảng ban đầu; . Phương thức Slicing lặp lại mảng từ đầu đến cuối [chỉ số cuối cùng].  

Làm thế nào để cắt một mảng? . Cắt lát là quá trình chọn/gọi một phần của một mảng, được cung cấp các chỉ mục bắt đầu và kết thúc. Để cắt một mảng, cú pháp sau đây được tuân theo-

tên mảng [bắt đầu. kết thúc. bươc]

Ở đây, bắt đầu đại diện cho chỉ mục bắt đầu của mảng được cắt của bạn

end đại diện cho chỉ mục kết thúc của mảng được cắt lát, [không bao gồm phần cuối]

bước là một tham số tùy chọn, thường được sử dụng khi bạn cần bỏ qua một số thành phần trong lát cắt của mình. Chẳng hạn, mọi phần tử thứ hai của lát cắt

Để đảo ngược một mảng, tham số bước đóng vai trò quan trọng nhất

Ví dụ: cắt mảng a = [1, 2, 3, 4]

1. từ đầu= 0 đến cuối = 2        =>     a[. 3]

2. từ đầu = 2 đến phần còn lại của mảng           =>       a[2. ]

3. từ đầu = 1 đến phần còn lại của mảng, bỏ qua phần tử tiếp theo        => a[1. 1]

Bạn cần chú ý đến chỉ số của mảng để hiểu về Slicing

Trong Python, chúng ta cũng có thể biểu thị chỉ mục của mảng bằng số âm, trong đó phần cuối của mảng được đánh dấu bằng -1

Cú pháp cắt để đảo ngược một mảng trong Python là.  

tên mảng[. -1]

Vì chỉ số bắt đầu của một mảng theo mặc định là 0. Do đó thêm [-1] vào 0, kết thúc bằng -1, i. e. chỉ số cuối cùng của mảng.  

Thêm [-1] vào [-1] dẫn đến [-2], là chỉ số cuối cùng thứ hai của mảng. Điều này tiếp tục cho đến khi nó đạt đến chỉ số cuối cùng [đầu tiên] của mảng

Thí dụ

The array is:  array['i', [1, 2, 3, 4, 5]]
2

 

Lưu ý rằng lệnh reverseArray[a] sẽ không hoạt động, vì chúng ta đang trả về mảng trong hàm của mình, nhưng chúng ta chưa gán bất kỳ biến nào để lưu trữ kết quả

đầu ra

The array is:  array['i', [1, 2, 3, 4, 5]]
3

 

Thay vì tạo một hàm, bạn luôn có thể sử dụng [. -1] trực tiếp

Một vi dụ khac

The array is:  array['i', [1, 2, 3, 4, 5]]
4

 

Thấy. Cắt lát sẽ không thực sự đảo ngược mảng cho bạn. Thay vào đó, nó sẽ cung cấp một cách để lặp lại mảng theo thứ tự ngược lại

đầu ra

The array is:  array['i', [1, 2, 3, 4, 5]]
5

 

Vì vậy, sự khác biệt giữa Đảo ngược và Lặp lại đảo ngược của một mảng là gì? . Trong khi thực hiện lặp ngược trên một mảng chỉ đơn giản ngụ ý lặp qua vòng lặp từ cuối mảng.  

Kiểm tra mã dưới đây để hiểu rõ hơn

The array is:  array['i', [1, 2, 3, 4, 5]]
6

Lưu ý cách mảng ban đầu không bị ảnh hưởng bởi việc lặp lại mảng theo thứ tự ngược lại. Trong khi thực hiện đảo ngược [], mảng ban đầu đã bị đảo ngược. Đó là sự khác biệt giữa đảo ngược một mảng trong Python và đảo ngược lặp qua một mảng trong Python

đầu ra

The array is:  array['i', [1, 2, 3, 4, 5]]
7

 

Phương pháp 05] Sử dụng đệ quy

Đệ quy cũng là một cách để đảo ngược một mảng trong Python mà không cần sử dụng bất kỳ hàm dựng sẵn nào. Khi trong quá trình thực thi, một hàm gọi chính nó, nó được gọi là đệ quy. Người ta cần cẩn thận khi xử lý Đệ quy vì nó có thể dẫn đến một vòng lặp vô hạn hoặc thực thi cho đến khi tràn ngăn xếp. Do đó, cần phải thêm một điều kiện kết thúc trong chức năng

Hãy xem đoạn mã dưới đây, để đảo ngược một mảng trong Python bằng cách sử dụng đệ quy

The array is:  array['i', [1, 2, 3, 4, 5]]
8

 

Bạn có thể bỏ ghi chú câu lệnh in trong hàm để biết cách đệ quy đang diễn ra và cách nó đảo ngược mảng trong Python. Điều kiện if ở trên là câu lệnh kết thúc. Cần thêm một điều kiện, nếu không hàm sẽ không ngừng thực hiện lời gọi đệ quy và sẽ dẫn đến lỗi

đầu ra

The array is:  array['i', [1, 2, 3, 4, 5]]
9

 

Khó hiểu?

Bạn sẽ nhận thấy cách thông qua đệ quy, mảng chia thành các phần tử đơn lẻ, cho đến khi hàm cuối cùng trả về các phần tử đơn lẻ. Sau đó, khi hàm quay trở lại chức năng gọi của nó, nó sẽ cộng phần tử đã ẩn [ở đây, số ở đầu mỗi mảng]. Do đó, điều này dẫn đến mảng đảo ngược của chúng tôi.  

Mặc dù Đệ quy không phải là phương pháp hay nhất để đảo ngược mảng, nhưng phương pháp này là cách tốt hơn để hiểu cách thức diễn ra của đệ quy và đảo ngược mảng

Phần kết luận

Bạn có thể thường gặp phải đảo ngược một mảng trong khi xử lý chương trình cạnh tranh. Có nhiều phương pháp do người dùng định nghĩa ngoài những phương pháp được đề cập ở trên. Nhưng mỗi phương thức sẽ có độ phức tạp thời gian chạy riêng và lợi thế riêng của nó so với phương thức khác

Sử dụng phương thức Slicing và reverse[] là cách dễ nhất để đảo ngược một mảng trong Python. Các phương thức trên phù hợp với mảng, được tạo bằng mô-đun mảng trong Python. Trong khi xử lý các mảng Numpy, có nhiều hàm dựng sẵn được cung cấp bởi thư viện Numpy, chẳng hạn như flipud[] hoặc flip[]. Hãy thử chạy các phương pháp được đề cập này và xác định phương pháp nào phù hợp nhất với bạn

Có chức năng lật trong Python không?

Hàm flip[] đảo ngược thứ tự các phần tử mảng dọc theo trục đã chỉ định, giữ nguyên hình dạng của mảng . Thông số. mảng. [array_like]Mảng là trục đầu vào. [số nguyên] trục dọc theo mảng bị đảo ngược.

Hàm flip[] dùng để làm gì?

Hàm flip[] được sử dụng để đảo ngược thứ tự các phần tử trong một mảng dọc theo trục đã cho . Hình dạng của mảng được giữ nguyên, nhưng các phần tử được sắp xếp lại. mảng đầu vào. Trục hoặc các trục dọc theo đó để lật qua.

Hàm nào đảo ngược một mảng trong Python?

Cái . Phương thức reverse[] trong Python là một phương thức tích hợp để đảo ngược danh sách tại chỗ. Đảo ngược danh sách tại chỗ có nghĩa là phương pháp sửa đổi và thay đổi danh sách ban đầu. Nó không tạo danh sách mới là bản sao của danh sách gốc nhưng với các mục trong danh sách theo thứ tự ngược lại.

Chủ Đề