Đảo ngược danh sách trong danh sách python

Trong thời gian gần đây, Python được nhiều nhà phát triển trên thế giới sử dụng rộng rãi hơn, do có sẵn rất nhiều thư viện và tùy chọn linh hoạt trong python. Người ta có thể chọn một cách tiếp cận tùy thuộc vào độ phức tạp về thời gian và không gian hoặc kỹ thuật dễ thực hiện từ nhiều kỹ thuật có sẵn để thực hiện một vấn đề duy nhất trong python. Cấu trúc dữ liệu trong python khá dễ hiểu và dễ thực hiện với các hàm có sẵn. Trong bài viết này, chúng ta hãy đi sâu vào các cách khác nhau để đảo ngược cấu trúc dữ liệu danh sách trong Python

Danh sách trong python là gì?

Về cơ bản, danh sách là một trong các loại dữ liệu trong python để lưu trữ một chuỗi nhiều loại dữ liệu trong một mục. Danh sách được sắp xếp có nghĩa là các phần tử được lưu trữ theo một thứ tự cụ thể. Danh sách có thể thay đổi, điều đó có nghĩa là chúng ta có thể truy cập và sửa đổi các thành phần danh sách và nó cũng cho phép các giá trị trùng lặp. Các mục danh sách được đặt trong dấu ngoặc vuông và được phân tách bằng dấu phẩy. Chúng ta có thể tạo một danh sách mới bằng cách sử dụng hàm tạo list()

Nếu bạn muốn tìm hiểu cách in danh sách trong python, hãy xem bài viết của chúng tôi

Ví dụ

new_list = list('a', 'b', 'c')
print(new_list)

 

đầu ra

['a' , 'b' , 'c']

 

If we try to check the type of the list using type(list_name), it will return

Danh sách khác với mảng như thế nào?

Kích thước mảng là cố định nhưng danh sách có thể tự động mở rộng. Trong mảng chỉ lưu được các phần tử cùng kiểu dữ liệu còn danh sách có thể lưu nhiều kiểu dữ liệu. Trong python, danh sách là kiểu dữ liệu dựng sẵn nên không cần nhập bất kỳ mô-đun nào để sử dụng danh sách. Nhưng mảng không phải là mô-đun dựng sẵn trong python nên nó cần được nhập riêng để sử dụng trong chương trình. Bạn có thể tìm hiểu thêm sự khác biệt giữa mảng và danh sách trong bài viết trước của chúng tôi

Lập chỉ mục danh sách hoạt động như thế nào trong python?

Danh sách có thể được truy cập và sửa đổi bằng cách lập chỉ mục. Phần tử đầu tiên trong danh sách sẽ có chỉ số là 0 và các phần tử sau sẽ có giá trị chỉ số theo thứ tự tăng dần là 1,2,3, v.v. , cho đến độ dài của danh sách trừ đi 1 chỉ số (i. e. , phần tử cuối cùng). Chúng ta cũng có thể truy cập các phần tử bằng cách lập chỉ mục phủ định bắt đầu từ chỉ mục cuối cùng bằng -1 và giảm dần từ đó cho đến phần tử đầu tiên. Hãy để chúng tôi hiểu rõ hơn về việc lập chỉ mục với hình ảnh sau đây

Đảo ngược danh sách trong danh sách python

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

Có nhiều chức năng tích hợp sẵn để đảo ngược danh sách trong python. Nhưng việc chọn cái nào để sử dụng cho vấn đề cụ thể là khó hiểu. Vì vậy, hãy xem chi tiết một số cách để đảo ngược danh sách trong python. Và sau khi hiểu rõ hơn về nhiều cách, bạn có thể chọn một cách phù hợp với yêu cầu của mình để đảo ngược danh sách

1) Sử dụng phương thức đảo ngược ()

Có một phương thức dựng sẵn được gọi là reverse() trong python có thể đảo ngược danh sách bằng cách thay đổi các phần tử thay cho danh sách ban đầu. Phương pháp này có thể được sử dụng trong các trường hợp cần hiệu quả bộ nhớ. Vì không cần thêm dung lượng cho phương pháp này, danh sách ban đầu sẽ bị đảo ngược. Phương pháp này được sử dụng để đảo ngược danh sách lớn

Ví dụ.  

original_list = [1,2,3,4,5]
print("List before reverse : ",original_list)
original_list.reverse()
print("List after reverse : ",original_list)

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

2) Sử dụng phương thức Reverse()

Đây là chức năng tích hợp để đảo ngược các thành phần danh sách mà không cần tạo bản sao của danh sách hoặc sửa đổi danh sách gốc. Nó tạo một iterator và lưu trữ các phần tử. Vì vậy, nếu chúng tôi cố gắng lưu trữ danh sách đảo ngược trong một danh sách mới, nó sẽ in đối tượng lặp chứ không phải dưới dạng danh sách

Ví dụ

original_list = [1, 2, 3, 4, 5]
print("List before reverse : ",original_list)
reversed_list = reversed(original_list)
print("List after reverse : ", reversed_list)

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : object at 0x7f61b67ff0407>

 

Vì vậy, để có được đầu ra dưới dạng danh sách, chúng ta phải truyền trình vòng lặp trong phương thức danh sách. Phương thức Reverse() này có thể được sử dụng ở những nơi chúng ta yêu cầu một danh sách làm đối tượng lặp hoặc nơi chúng ta không muốn sửa đổi danh sách ban đầu

Ví dụ

original_list = [1,2,3,4,5]
print("List before reverse : ",original_list)
reversed_list = reversed(original_list)
print("List after reverse : ", list(reversed_list))

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

3) Sử dụng vòng lặp for

Một cách khác để đảo ngược danh sách python mà không cần sử dụng bất kỳ phương thức tích hợp nào là sử dụng các vòng lặp. Tạo một danh sách trống để sao chép các phần tử bị đảo ngược. Trong vòng lặp for, hãy thêm trình vòng lặp làm phần tử danh sách ngay từ đầu với các phần tử danh sách mới. Vì vậy, theo cách đó, các phần tử danh sách sẽ được đảo ngược. Cách tiếp cận này có thể được sử dụng khi bạn không muốn sử dụng các phương pháp dựng sẵn và muốn tự mình xây dựng logic

Ví dụ

________số 8

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

4) Sử dụng hiểu danh sách

Khi hiểu danh sách, chúng ta có thể truy cập dữ liệu và thực hiện các thao tác bằng cách sử dụng danh sách hiện có. Ý tưởng chính là giảm mã với cú pháp ngắn. Trong ví dụ của chúng tôi, chúng tôi có thể truy cập các phần tử từ chỉ mục cuối cùng và in các phần tử cho đến khi đạt được phần tử bắt đầu

Ví dụ

________số 8

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

5) Sử dụng thao tác cắt lát

Cắt lát là thao tác được thực hiện trong danh sách để truy cập các thành phần danh sách từ chỉ mục bắt đầu đến chỉ mục kết thúc. Thao tác cắt này có thể được sử dụng để đảo ngược danh sách trong python.
Cú pháp để cắt các phần tử là List_name[start. dừng lại. bươc]. Vì vậy, chúng tôi phải đề cập đến chỉ số bắt đầu và kết thúc. Tất cả các thông số này hoặc bất kỳ thông số nào trong số chúng là tùy chọn. Bắt đầu cho biết chỉ mục bắt đầu, dừng cho biết chỉ mục kết thúc cộng với 1 giá trị và bước có nghĩa là số phần tử chúng tôi muốn bỏ qua. Giá trị bước 1 có nghĩa là nó sẽ không bỏ qua bất kỳ phần tử nào và giá trị 2 bỏ qua một phần tử 3 có nghĩa là hai phần tử, v.v. Giá trị bước không thể bằng không.

Ví dụ

['a' , 'b' , 'c']
2

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

6) Sử dụng phương thức insert()

Một cách khác để đảo ngược danh sách bằng hàm dựng sẵn là sử dụng phương thức insert(). Phương thức insert() được sử dụng để thêm các phần tử vào danh sách tại một chỉ mục cụ thể. Nó nhận hai đối số, tham số đầu tiên là giá trị chỉ mục mà phần tử phải được chèn vào và tham số tiếp theo là phần tử sẽ được chèn vào danh sách. Tạo một vòng lặp for và thêm từng phần tử từ đầu đến cuối vào đầu danh sách, để chúng ta có thể nhận được danh sách đầu ra theo thứ tự ngược lại

Ví dụ

['a' , 'b' , 'c']
4

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

7) Sử dụng đệ quy

Chúng ta có thể đảo ngược danh sách bằng cách sử dụng đệ quy mà không cần sử dụng bất kỳ hàm dựng sẵn nào. Đệ quy có nghĩa là gọi đi gọi lại chính hàm đó. Chúng ta có thể gọi bắt đầu gọi hàm lặp đi lặp lại cho đến khi còn lại một phần tử và sau đó bắt đầu in danh sách theo thứ tự ngược lại

Ví dụ

['a' , 'b' , 'c']
6

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

8) Sử dụng chức năng lát cắt

Chức năng của phương thức Slice gần giống với toán tử cắt. Ở đây chúng ta phải tạo một đối tượng slice riêng cho chức năng slice. Đối tượng lát được tạo để sử dụng lại nó trên các giá trị khác nhau. Đối tượng slice có các tham số sau, slice[start. dừng lại. bươc]. Ưu điểm chính của việc sử dụng chức năng lát này là chúng tôi có thể cung cấp các lát tùy chỉnh có thể được sử dụng lại trong các chương trình của chúng tôi

Ví dụ

['a' , 'b' , 'c']
8

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

9) Sử dụng các phương thức append() và pop()

Một cách nữa để đảo ngược danh sách trong python là sử dụng hai hàm có sẵn append() và pop(). Điều này hoạt động bằng cách bật phần tử cuối cùng từ danh sách ban đầu và thêm nó vào danh sách mới. Một lưu ý quan trọng trong hai phương thức này là phương thức pop luôn lấy phần tử ở chỉ mục cuối cùng và phương thức append luôn thêm phần tử vào đầu danh sách

Ví dụ

original_list = [1,2,3,4,5]
print("List before reverse : ",original_list)
original_list.reverse()
print("List after reverse : ",original_list)
0

 

đầu ra

List before reverse : [1, 2, 3, 4, 5]
List after reverse : [5, 4, 3, 2, 1]

 

Sự kết luận

Tùy thuộc vào yêu cầu của bạn, bạn có thể chọn một trong các cách đảo ngược danh sách nêu trên trong python. Vì mỗi cách tiếp cận là khác nhau, nó hoàn toàn phụ thuộc vào tuyên bố vấn đề của bạn xem bạn có muốn đảo ngược danh sách và lưu trữ dưới dạng danh sách riêng biệt hay không, bạn cần đảo ngược các phần tử tại chỗ hay bạn cần tùy chỉnh việc đảo ngược của mình hoặc bạn không muốn