Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python Reverse String (Đảo ngược chuỗi): Hướng dẫn từng bước

Bạn có thể đảo ngược chuỗi trong Python dùng slicing (cắt lát) hoặc phương thức reversed(). Hàm đệ quy đọc từng ký tự trong chuỗi và đảo ngược toàn bộ chuỗi là cách phổ biến khác để đảo ngược chuỗi. Không có hàm tường minh được thiết kế riêng để đảo ngược chuỗi.


Khi làm việc trong Python, bạn có thể có chuỗi muốn đảo ngược. Ví dụ, bạn đang tạo trò chơi. Bạn có thể muốn cho người dùng tạo tên người dùng bằng cách gửi tên của họ cho chương trình và chương trình đảo ngược nó.

Đảo ngược chuỗi không phải thao tác phổ biến trong lập trình, nên Python không có hàm tích hợp sẵn để đảo ngược chuỗi. Tuy nhiên, đảo ngược chuỗi là chủ đề hay xuất hiện trong phỏng vấn việc làm, và nó có một vài ứng dụng thực tế.

Trong hướng dẫn này, chúng ta sẽ thảo luận ba phương pháp bạn có thể dùng để đảo ngược chuỗi trong Python. Chúng ta sẽ bắt đầu với ôn tập chuỗi Python. Sau đó, thảo luận cắt lát chuỗi. Tiếp theo, khám phá cách dùng hàm reversed() và join(). Cuối cùng, xem xét đệ quy.

Cách đảo ngược chuỗi trong Python

Có ba phương pháp bạn có thể dùng để đảo ngược chuỗi:

  • Cắt lát chuỗi với cú pháp [::-1]
  • Dùng hàm reversed() tạo bộ lặp ngược (reverse iterator) đọc chuỗi và đảo ngược nội dung
  • Dùng hàm đệ quy

Hãy thảo luận cả ba phương pháp này.

Đảo ngược chuỗi Python dùng Slicing

Khi bạn cắt lát chuỗi Python, bạn có thể dùng trình tự cắt lát [::-1] để tạo bản sao đảo ngược của chuỗi. Cú pháp này lấy tất cả ký tự trong chuỗi và đảo ngược chúng.

Giả sử chúng ta có chuỗi giá trị "Python". Chúng ta muốn xem chuỗi này theo thứ tự ngược. Chúng ta có thể làm bằng cú pháp [::-1]:

string = "Python"
reversed = string[::-1]
print(reversed)

Mã trả về: nohtyP.

Chúng ta khai báo biến Python tên reversed lưu chuỗi đảo ngược. Cú pháp [::-1] được thêm ở cuối biến chứa giá trị chuỗi "Python".

Đây là phương pháp hiệu quả vì ngắn gọn và đơn giản. Bạn chỉ cần thêm [::-1] ở cuối chuỗi để đảo ngược nó.

Phương pháp này có thể gây nhầm lẫn vì cú pháp không truyền đạt rõ ràng rằng nó dùng để đảo ngược chuỗi. Kết quả, nhiều lập trình viên tránh dùng kỹ thuật này.

Đảo ngược chuỗi Python dùng reversed()

Python bao gồm hàm tích hợp sẵn dùng để tạo bộ lặp ngược: hàm reversed(). Bộ lặp này hoạt động vì chuỗi được lập chỉ mục, nên mỗi giá trị trong chuỗi có thể truy cập riêng lẻ.

Bộ lặp ngược sau đó dùng để lặp qua các phần tử trong chuỗi theo thứ tự ngược.

Ví dụ dùng reversed() tạo bộ lặp ngược in chuỗi theo thứ tự ngược:

for char in reversed("Python"):
    print(char)

Mã trả về:

n
o
h
t
y
P

Trong mã, chúng ta chỉ định vòng lặp for Python lặp qua mỗi mục trong phương thức reversed(). Bạn thấy mã in chuỗi theo thứ tự ngược.

Mã in mỗi ký tự trên dòng mới. Điều này vì dùng reversed() với vòng lặp for. Nếu muốn chuỗi xuất hiện trên một dòng, cần dùng reversed() với phương thức join().

Chúng ta có thể dùng phương thức join() để gộp tất cả ký tự từ bộ lặp reversed() thành một chuỗi.

Ví dụ dùng reversed() và join() đảo ngược chuỗi Python:

"".join(reversed("Python"))

Mã trả về: nohtyP.

Phương pháp đảo ngược chuỗi này hữu ích vì, giống phương pháp cắt lát thảo luận ở trên, nó gọn gàng và súc tích. Phương pháp này có thêm lợi ích là dễ đọc và hiểu. Ngay cả khi bạn chưa từng thấy phương thức reversed() hoặc join(), bạn cũng có thể đoán được đang xảy ra gì.

Đảo ngược chuỗi Python: Đệ quy (Recursion)

Đệ quy là thuật ngữ khoa học máy tính mô tả hàm tự gọi chính nó, trực tiếp hoặc gián tiếp. Ví dụ đảo ngược chuỗi qua đệ quy Python:

def reverse_string(string):
    if len(string) == 0:
        return string
    else:
        return reverse_string(string[1:]) + string[0]

reverse_string("Python")

Mã trả về: nohtyP.

Phương pháp này dùng slicing để đảo ngược chuỗi. Thay vì dùng một phép cắt đơn giản như trước, chúng ta dùng hàm Python tên reverse_string.

Hàm này cắt chuỗi và trả về phiên bản đảo ngược. Phương pháp này rất hiệu quả. Kết quả, nhiều lập trình viên Python ưu tiên nó.

Hàm chấp nhận chuỗi chúng ta muốn đảo ngược. Nếu không có ký tự trong chuỗi, giá trị chuỗi được trả về. Ngược lại, gọi hàm lại dùng cú pháp string[1:] làm đối số. Chúng ta thêm ký tự đầu tiên trong chuỗi vào cuối những gì hàm trả về.

Kết luận

Mặc dù Python không bao gồm hàm đảo ngược tích hợp sẵn, có vài cách tiếp cận để đảo ngược chuỗi.

Chúng ta có thể dùng phương pháp cắt lát [::-1] đảo ngược chuỗi qua slicing, hàm reversed() và join() đảo ngược chuỗi qua lặp ngược, hoặc đệ quy đảo ngược chuỗi dùng hàm đệ quy.

Trong hướng dẫn này, chúng ta đã thảo luận dùng slicing, reversed() và join(), và đệ quy để đảo ngược chuỗi trong Python. Chúng ta đã khám phá ví dụ của mỗi phương pháp chuỗi trong hành động.

Để tìm hiểu thêm về viết mã Python, đọc hướng dẫn toàn diện How to Learn Python của chúng tôi.