Đảo ngược list trong python (reverse, reversed) | Laptrinhcanban.com

Đảo ngược list trong python (reverse, reversed)

Hướng dẫn tất cả cách đảo ngược list trong python. Bạn sẽ học được tất cả cách đảo ngược list trong python bằng cách sử dụng phương thức reverse(), hàm reverse trong python cũng như bằng cách cắt (slice) list python sau bài học này.

Chúng ta có 3 phương pháp để đảo ngược list trong python như sau:

  • Phương thức reverse() : đảo ngược list ban đầu trong python
  • Cắt (slice) list : Đảo ngược list và tạo ra một list mới
  • Hàm reverse trong python : Đảo ngược list và tạo ra một trình lặp

Chúng ta sẽ cùng tìm hiểu các phương pháp này ở dưới đây:

Đảo ngược list ban đầu trong python| Phương thức reverse()

Phương thức reverse() trong python sẽ đảo ngược thứ tự các phần tử trong list ban đầu. Đây là một quá trình tự phá hủy (Destructive processing) và tái tạo lại list ban đầu với các phần tử theo thứ tự ngược lại.

Chúng ta sử dụng Phương thức reverse() trong python với cú pháp sau đây:

orinary_list . reverse ()

Trong đó orinary_list là list ban đầu cần đảo ngược lại.

Ví dụ, chúng ta dùng Phương thức reverse() để đảo ngược một dãy số trong python như sau:

orinary_list = [1, 2, 3, 4, 5]

orinary_list.reverse()
print(orinary_list)
#>> [5, 4, 3, 2, 1]

Tương tự chúng ta sử dụng reverse() để đảo ngược list trong python phần tử là chuỗi như sau:

mylist = ['Ali' , 'Bob' , 'Eva' , 'Adam']
mylist.reverse()
print(mylist)
#>> ['Adam', 'Eva', 'Bob', 'Ali']

Lưu ý, sau khi thực hiện phương thức reverse() thì list ban đầu sẽ bị thay đổi, nhưng bản thân phương thức reverse() sẽ trả về giá trị None như sau:

print(org_list.reverse())
# None

Nếu không biết kết quả trả về của phương thức reverse() là None, bạn rất dễ mắc lỗi logic trong chương trình. Ví dụ như khi muốn in ra list đảo ngược trong python, thay vì in list đã được đảo ngược bằng reverse() thì bạn lại in ra kết quả của phương thức reverse() như sau:

l = ['a' , 'b', 'c']

# Cách in sai:
print(l.reverse())
#>> None.

# Cách in đúng:
l.reverse()
print(l)
#>> ['a', 'b', 'c']

Đảo ngược list và tạo ra một list mới trong python | Cắt (slice) list

Chúng ta cũng có thể ứng dụng chức năng cắt (slice) list để đảo ngược list trong python.
Nếu chúng ta chỉ định đối số step = -1 khi Cắt (slice) list trong python , list được cắt ra sẽ có thứ tự ngược lại với list ban đầu. Lợi dụng tính chất này, chúng ta có thể đảo ngược list trong python như ví dụ sau:

orinary_list = [1, 2, 3, 4, 5]
new_list = orinary_list[::-1]

print(org_list)
print(new_list)
# [1, 2, 3, 4, 5]
# [5, 4, 3, 2, 1]

Lưu ý là khác với phương thức resort() ở trên, khi cắt (slice) list chúng ta sẽ tạo ra một list mới có phần tử ngược lại với list ban đầu, còn bản thân list ban đầu thì không bị thay đổi.

Đảo ngược list và tạo ra trình lặp trong python | hàm reversed trong python

Hàm reversed trong python là một hàm cài đặt sẵn trong python, có chức năng lấy các phần tử trong list chỉ định và tạo ra một trình lặp với thứ tự các phần tử trong đó ngược lại với list ban đầu.

Kết hợp sử dụng hàm list() trong python, chúng ta có thể chuyển trình lặp - kết quả của hàm reversed() thành một list mới, với thứ tự phần tử ngược với list ban đầu.

Chúng ta sử dụng hàm reversed() trong python với cú pháp sau đây:

list_iterator = reversed ( orginary_list )

Trong đó orginary_list là list ban đầu cần đảo thứ tự và list_iterator là trình lặp được tạo ra.

Ví dụ cụ thể:

orginary_list = ['a' , 'b', 'c' , 'd' , 'e']
print(orginary_list)
#>> ['a' , 'b', 'c' , 'd' , 'e']

list_iterator = reversed(orginary_list)
print(list_iterator)
#>> <list_reverseiterator object at 0x14d5e9b41340>

Lưu ý là hàm reversed() sẽ trả về một trình lặp chứ không phải là một list. Do đó khi in trình lặp ra thì kết quả sẽ như ở trên. Để lấy và in ra các phần tử trong trình lặp, chúng ta cần phải dùng vòng lặp for như sau:

for i in list_iterator:
print(i)
#>> e
#>> d
#>> c
#>> b
#>> a

Kết hợp với hàm list() trong python, chúng ta có thể biến trình lặp ở trên thành một list mới có thứ tự phần tử ngược lại với list ban đầu như sau:

new_list = list(list_iterator)
print(new_list)
#>>['e', 'd', 'c', 'b', 'a']

Một cách tổng quát, chúng ta đảo ngược list trong python bằng hàm reversed() với cách viết như sau:

orginary_list = ['a' , 'b', 'c' , 'd' , 'e']
new_list = list(reversed(orginary_list))

print(orginary_list)
print(new_list)
#>> ['a', 'b', 'c', 'd', 'e']
#>> ['e', 'd', 'c', 'b', 'a']

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách đảo ngược list trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.