معکوس کردن رشته در پایتون

امیرحسین بیگدلو 4 ماه قبل

هنگامی که با رشته های پایتون کار میکنید ممکن است بخواهید یک رشته را معکوس کنید. پایتون شامل چند ابزار و تکنیک مفید است که می تواند در این شرایط به شما کمک کند. در این مقاله چند روش مختلف را برای معکوس کردن رشته ها در پایتون میبینیم.

 

رشته ها در پایتون تغییر ناپذیر هستند، بنابراین معکوس کردن یک رشته در جای خود امکان پذیر نیست. برای حل این مشکل، باید یک کپی از رشته گرفته و بعد از معکوس کردن آن را در یک متغیر جدید ذخیره کنید. خوشبختانه پایتون ابزارهای داخلی زیادی دارد که در این کار به ما کمک میکند.

 

ویدیو پیشنهادی:‌ رشته در پایتون

 

معکوس کردن رشته با تکنیک برش یا slicing

برش یک تکنیک مفید است که به شما امکان می دهد بخش خاصی را از یک دنباله استخراج کنید. وقتی صحبت از برش رشته ها می شود، برای برش رشته، باید شروع و پایان را مشخص کنید. همچنین میتوانید قدم های برش را نیز با step مشخص کنید:

a_string[start:stop:step]

 

مقدار start ایندکس شروع برای برش و stop ایندکس پایان برش است و step مشخص میکند که بین هر قدم چقدر فاصله باشد. به چند مثال توجه کنید:

>>> letters = "AaBbCcDd"

>>> # Get all characters relying on default offsets
>>> letters[::]
'AaBbCcDd'

>>> letters[:]
'AaBbCcDd'

>>> # Get every other character from 0 to the end
>>> letters[::2]
'ABCD'

>>> # Get every other character from 1 to the end
>>> letters[1::2]
'abcd'

 

برای معکوس کردن یک رشته با تکنیک برش، باید مقادیر شروع و پایان را خالی و مقدار step را برابر با 1- قرار دهید:

>>> letters = "ABCDEF"

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

 

تکنیک دیگر برای ایجاد یک کپی معکوس از یک رشته موجود، استفاده از تابع slice است. سینتکس این تابع داخلی به شرح زیر است:

slice(start, stop, step)

 

با استفاده از این تابع به راحتی میتوانید یک رشته را معکوس کنید:

>>> letters = "ABCDEF"

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

 

ویدیو پیشنهادی: آموزش فانکشن‌های split و join در پایتون

 

معکوس کردن رشته با توابع join و reversed

دومین و مسلماً پایتونیک‌ترین رویکرد برای معکوس کردن رشته‌ها استفاده از reversed همراه با join است. اگر یک رشته را به reversed ارسال کنید، یک آبجکت iterable دریافت می کنید که کاراکترها را به ترتیب معکوس به دست می دهد:

>>> greeting = reversed("Hello, World!")

>>> next(greeting)
'!'
>>> next(greeting)
'd'
>>> next(greeting)
'l'

 

حالا میتوانید با استفاده از join رشته های معکوس شده را به هم بچسبانید:

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

 

در این عبارت تک خطی، نتیجه reversed را مستقیماً به عنوان آرگومان به join ارسال میکنیم. در نتیجه، یک کپی معکوس از رشته ورودی اصلی دریافت می کنید. این ترکیب از reversed و join یک گزینه عالی برای معکوس کردن رشته ها است.

 

ویدیو پیشنهادی: آموزش متد reversed در پایتون

 

معکوس کردن رشته با حلقه for

این تکنیکی که برای معکوس کردن یک رشته استفاده می کنید شامل یک حلقه for و عملگر الحاق (+) است. در این روش کاراکترهای یک رشته از آخر به یک رشته جدید اضافه میشوند. در اینجا تابعی وجود دارد که یک رشته را می گیرد و با استفاده از الحاق آن را در یک حلقه معکوس می کند:

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

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

 

در هر تکرار، حلقه کاراکتر بعدی، char، را از متن می گیرد و آن را با محتوای فعلی result الحاق می کند. توجه داشته باشید که result ابتدا یک رشته خالی است. در انتهای حلقه، result یک رشته جدید را به عنوان یک کپی معکوس از رشته اصلی نگه می دارد.

 

ویدیو پیشنهادی: آموزش توابع بازگشتی در پایتون

 

معکوس کردن رشته با تابع بازگشتی

برای معکوس کردن رشته ها نیز می توانید از Recursion استفاده کنید. بازگشت زمانی است که یک تابع خود را در بدن خود فراخوانی می کند. در اینجا نحوه تعریف یک تابع بازگشتی است که یک کپی معکوس از یک رشته داده شده را برمی گرداند:

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

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

 

در این مثال، ابتدا آیتم پایه را بررسی می کنید. اگر رشته ورودی دقیقاً یک کاراکتر داشته باشد، رشته را بدون تغییر برمی گرداند.

 

ویدیو پیشنهادی: آموزش توابع map و filter و reduce در پایتون

 

معکوس کردن رشته با تابع reduce

اگر ترجیح می دهید از یک روش برنامه نویسی فانکشنال استفاده کنید، می توانید از reduce کتابخانه functools برای ایجاد رشته های معکوس استفاده کنید. در اینجا نحوه استفاده از reduce برای معکوس کردن رشته ها آمده است:

>>> from functools import reduce

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

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

 

در این مثال، تابع لامبدا دو رشته می گیرد و آنها را به ترتیب معکوس به هم متصل می کند. فراخوانی reduce لامبدا را به متن در یک حلقه اعمال می کند و یک کپی معکوس از رشته اصلی ایجاد می کند.

مطالب مشابه



مونگارد