Hướng dẫn dùng backwards letter python

Khi thường xuyên sử dụng các chuỗi Python, bạn có thể gặp phải trường hợp phải làm việc với chúng theo thứ tự ngược lại. Python bao gồm một số công cụ và kỹ thuật hữu ích có thể giúp bạn trong những tình huống này. Bạn có thể tạo các bản sao đảo ngược của các chuỗi hiện có một cách nhanh chóng và hiệu quả.

Biết về các công cụ và kỹ thuật đảo ngược chuỗi trong Python này sẽ giúp bạn cải thiện trình độ của mình với tư cách là nhà phát triển Python.

Để đi qua được bài hướng dẫn này, bạn cần có kiến thức cơ bản liên quan đến chuỗi, các vòng lặp và đệ quy. Tham khảo thêm khóa học của tôi: Học python cơ bản thông qua lập trình một game

Làm việc với các chuỗi Python theo thứ tự ngược lại có thể là một yêu cầu trong một số trường hợp cụ thể. Ví dụ: giả sử bạn có một chuỗi “ABCDEF” và bạn muốn có một cách nhanh chóng để đảo ngược nó để lấy “FEDCBA”. Bạn có thể sử dụng công cụ Python nào để trợ giúp?

Các chuỗi là bất biến trong Python, vì vậy không thể đảo ngược một chuỗi đã cho. Bạn sẽ cần tạo các bản sao đảo ngược của các chuỗi để đáp ứng yêu cầu.

Python cung cấp hai cách đơn giản để đảo ngược chuỗi. Đầu tiên, bạn có thể sử dụng slice để tạo trực tiếp bản sao của một chuỗi đã cho theo thứ tự ngược lại. Tùy chọn thứ hai là sử dụng hàm có sẵn reversed() để tạo một trình lặp tạo ra chuỗi theo thứ tự ngược lại.

Ví dụ để đảo ngược chuỗi sử dụng slice

>>> letters = "ABCDEF"

>>> letters[::-1]
'FEDCBA'

>>> letters
'ABCDEF'

Kỹ thuật slice này trả về tất cả các ký tự từ cuối bên phải của chuỗi, nơi chỉ số bằng len (các chữ cái) – 1, trở lại đầu bên trái của chuỗi, trong đó chỉ mục bằng 0. Khi bạn sử dụng thủ thuật này, bạn nhận được một bản sao của chuỗi gốc theo thứ tự ngược lại mà không ảnh hưởng đến nội dung ban đầu của chuỗi.

Một kỹ thuật khác là sử dụng hàm slice()

>>> letters = "ABCDEF"

>>> letters[slice(None, None, -1)]
'FEDCBA'

Sử dụng hàm slice() hoàn toàn tương tự như kỹ thuật slice ở trên.

Sử dụng join() và reversed() cũng có thể thực hiện để đảo ngược chuỗi

>>> "".join(reversed("Hello, World!"))
'!dlroW ,olleH'

Trong biểu thức một dòng này, bạn chuyển trực tiếp kết quả của việc gọi reversed() dưới dạng đối số cho hàm join(). Kết quả là, bạn nhận được một bản sao đảo ngược của chuỗi  ban đầu. Sự kết hợp của reversed() và join() này là một lựa chọn tuyệt vời để đảo ngược chuỗi.

Tạo chuỗi đảo ngược bằng tay

Phần trên, bạn đã học về các công cụ và kỹ thuật cơ bản Python để đảo ngược chuỗi một cách nhanh chóng. Trong hầu hết trường hợp, chúng là lựa chọn tuyệt vời của bạn. Tuy nhiên, bạn có thể cần phải đảo ngược một chuỗi bằng tay tại một số thời điểm trong cuộc phiêu lưu viết code của mình.

Sử dụng vòng lặp để đảo ngược chuỗi

* Sử dụng vòng lặp for

>>> def reversed_string(text):
...     result = ""
...     for char in text:
...         result = char + result
...     return result
...

>>> reversed_string("Hello, World!")
'!dlroW ,olleH'

* Sử dụng vòng lặp while

>>> def reversed_string(text):
...     result = ""
...     index = len(text) - 1
...     while index >= 0:
...         result += text[index]
...         index -= 1
...     return result
...

>>> reversed_string("Hello, World!")
'!dlroW ,olleH'

Sử dụng đệ quy để đảo ngược chuỗi

>>> def reversed_string(text):
...     if len(text) == 1:
...         return text
...     return reversed_string(text[1:]) + text[:1]
...

>>> reversed_string("Hello, World!")
'!dlroW ,olleH'

Trong ví dụ này, trước tiên ta kiểm tra trường hợp cơ sở. Nếu chuỗi đầu vào có một ký tự, ta ngay lập tức return chuỗi đó.

Câu lệnh cuối cùng, là trường hợp đệ quy, gọi chính nó là reversed_string(). Lệnh gọi sử dụng text[1:] của chuỗi đầu vào làm đối số. Slice này chứa tất cả các ký tự trong chuỗi, ngoại trừ ký tự đầu tiên. Bước tiếp theo là thêm kết quả của lệnh gọi đệ quy cùng với text[: 1], chứa ký tự đầu tiên của chuỗi.

Sử dụng reduce() để đảo ngược chuỗi

>>> from functools import reduce

>>> def reversed_string(text):
...     return reduce(lambda a, b: b + a, text)
...

>>> reversed_string("Hello, World!")
'!dlroW ,olleH'

Trong ví dụ này, hàm lambda nhận hai chuỗi và nối chúng theo thứ tự ngược lại. Lệnh gọi reduce() áp dụng lambda vào text trong một vòng lặp và tạo một bản sao đảo ngược của chuỗi gốc.