از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش معکوس کردن رشته در پایتون
سرفصلهای مطلب
معرفی
اگرچه ممکن است در هیچ سناریویی در دنیای واقعی این کار معمولی نباشد، رشته های معکوس عمل بسیار رایجی است که در یک مصاحبه شغلی با آن روبرو خواهید شد. به خصوص اگر برای شغلی در یک زبان برنامه نویسی درخواست می دهید که روش های داخلی برای معکوس کردن رشته ها ندارد. با درخواست از شما برای معکوس کردن یک رشته، یک مصاحبه کننده می تواند تصور بسیار دقیقی از روش رویکرد شما به تجزیه و تحلیل مشکل و ایجاد یک راه حل از ابتدا داشته باشد.
همچنین، از آنجایی که راهحلهای زیادی برای این مشکل وجود دارد، این فرصتی است که بدرخشید و آگاهی خود را از سرعتهای مختلف اجرا بین الگوریتمهای مختلف نشان دهید، بنابراین بهترین راهحل ممکن را ایجاد کنید.
در این مقاله، روش معکوس کردن یک رشته در پایتون را بررسی خواهیم کرد. ما چندین راه حل ممکن را در نظر می گیریم و آنها را با هم مقایسه می کنیم، بنابراین شما می توانید بهترین راه حل را انتخاب کنید که با نیازهای شما مطابقت دارد.
بدیهی است که مصاحبه ها تنها جایی نیستند که می توانید با نیاز به معکوس کردن یک رشته مواجه شوید – برای مثال، برخی از مشکلات بیان منظم وجود دارد که هنگام کار با رشته های معکوس بسیار آسان تر حل می شوند.
رشته ها در پایتون
رشته در پایتون یک آرایه تغییرناپذیر از بایت ها است – به طور خاص دنباله ای از بایت ها که کاراکترهای یونیکد را نشان می دهند. در واقع، یک رشته با کد به صورت دنباله ای از کاراکترهای احاطه شده توسط a نوشته می شود جفت گیومه (تک یا دوتایی)، اما آنها در داخل به عنوان دنباله ای از کدهای یونیکد ذخیره می شوند:
example_str = "Hello World!"
توجه داشته باشید: شی واقعی مورد استفاده برای مقابله با رشته ها در پایتون، the نامیده می شود str
هدف – شی. در اصل یک نوع داده رشته ای را نشان می دهد.
یکی از ویژگی های مهم رشته ها در پایتون این است که آنها هستند تغییرناپذیر، به این معنی که آنها را نمی توان پس از ایجاد تغییر داد. تنها راه برای اصلاح یک رشته ایجاد کپی اصلاح شده آن است که بسیاری از عملیات را پیچیده می کند روی رشته های. برای مورد علاقه خاص ما در این مقاله تفاوتی ندارد – عملکرد معکوس کردن یک رشته.
معکوس کردن یک رشته در پایتون
اکنون که همه اصول اولیه را پوشش دادیم، میتوانیم روش معکوس کردن یک رشته در پایتون را بررسی کنیم. همانطور که قبلاً بیان کردیم، چندین راه برای انجام این کار وجود دارد – در این مقاله، ما برخی از پرکاربردترین آنها را پوشش خواهیم داد. هر رویکرد دارای نقاط قوت و ضعف خاص خود است، برخی از آنها کارآمدتر هستند اما کمتر قابل خواندن هستند. از سوی دیگر، برخی از آنها واقعا خوانا و قابل درک هستند، اما به قیمت کارآمد نبودن.
در بخش های بعدی رشته را معکوس خواهیم کرد "Hello World!"
، که باید برعکس شود "!dlroW olleH"
:
example_str = "Hello World!"
راه حل پیشنهادی: استفاده از نماد Slice
یکی دیگر از ویژگی های مهم رشته ها در پایتون این است که آنها هستند برش پذیر. این بدان معناست که یک زیر رشته را می توان از رشته اصلی استخراج کرد – و پایتون یک راه بسیار ساده برای انجام این کار با استفاده از اپراتور برش.
عملگر slicing در پایتون دستور زیر را دارد – (start:end:step)
. یک زیر رشته را استخراج می کند که از قسمت شروع می شود start
به end
. اگر step
یک عدد مثبت است، start
باید کمتر از end
بنابراین عملگر برش یک زیررشته متحرک ایجاد می کند به جلو. از سوی دیگر، اگر step
یک عدد منفی است، رشته فرعی ایجاد می شود به عقب در رشته اصلی بنابراین، اگر شما تنظیم کنید step
به -1
و ترک کن start
و end
خالی، شما به طور موثر یک رشته کامل را معکوس کنید:
example_str = "Hello World!"
reversed_str = example_str(::-1)
print(reversed_str)
ما از عملگر برش استفاده کرده ایم روی ما example_str
به روشی که قبلا توضیح داده شد، که نسخه معکوس رشته اصلی ما را به دست می دهد:
"!dlroW olleH"
این رویکرد برای معکوس کردن یک رشته در پایتون در نظر گرفته می شود کارآمدترین برای رشته های ورودی بزرگ، اما این به قیمت تمام می شود خوانایی ضعیف – مخصوصاً برای کسانی که با نماد برش در پایتون آشنایی ندارند. برای بهبود آن، ما می توانیم برش را در یک تابع بپیچید، که خوانایی کد نهایی را افزایش می دهد:
def reverse_string(s):
return s(::-1)
بعداً از این تابع به جای عملگر برش ساده برای معکوس کردن رشته مورد نظر استفاده می کنیم و رشته به دست آمده مانند قبل خواهد بود – "!dlroW olleH"
:
reversed_str = reverse_string(example_str)
مشاوره: قرار دادن هر بخش از یک کد در یک تابع به طور کلی یک تمرین خوب است! علاوه بر بهبود خوانایی کد، در واقع به شما کمک می کند کدهای ماژولارتر و قابل استفاده مجددتری ایجاد کنید. بنابراین، میتوانید هر یک از کدهای زیر را به همان روشی که در این بخش نشان داده شده است، در تابع قرار دهید.
استفاده کردن پیوستن() و معکوس ()
اگرچه برش از نظر سرعت بهترین عملکرد را دارد، اما جایگزین محکم از نظر خوانایی، ترکیب دو روش داخلی پایتون است – str.join()
و reversed()
.
اول از همه، reversed()
معکوس برمی گرداند اشاره گر برای رشته به عنوان آرگومان آن. که ما را قادر می سازد تا رشته اصلی را به عقب برگردانیم و با استفاده از کاراکترهای آن را به رشته خالی اضافه کنیم str.join()
تابع:
example_str = "Hello World!"
reversed_str = ''.join(reversed(example_str))
print(reversed_str)
این یک کپی معکوس از رشته اصلی ایجاد می کند:
"!dlroW olleH"
با استفاده از a برای حلقه
حلقه ها همچنین می توانند برای معکوس کردن یک رشته در پایتون استفاده شوند – اولین موردی که در نظر می گیریم این است for
حلقه ما می توانیم از آن برای تکرار در رشته اصلی استفاده کنیم – به جلو و عقب. از آنجایی که میخواهیم یک رشته را معکوس کنیم، اولین چیزی که به ذهن میرسد این است که روی رشته از انتها به ابتدا تکرار کنیم و هر کاراکتر را به رشته جدید اضافه کنیم. برای این منظور، ما از reversed()
تابع:
example_str = "Hello World!"
reversed_str = ""
for i in reversed(example_str):
reversed_str += i
print(reversed_str)
ما تکرار کرده ایم به عقب روی رشته اصلی و هر کاراکتر را به resulting_str
، که نسخه معکوس شده را ذخیره می کند example_str
در پایان:
"!dlroW olleH"
توجه داشته باشید: توجه کنید که چگونه هر کاراکتر را به رشته معکوس اضافه می کنیم، اما رشته ها در پایتون تغییر ناپذیر هستند. ما میتوانیم این کار را انجام دهیم زیرا پایتون، اساساً، هر بار که یک کاراکتر به آن اضافه میکنیم، یک کپی اصلاحشده از یک رشته ایجاد میکند، قبل از اینکه نتیجه را بهعنوان یک رشته تغییر ناپذیر جامد کرده و آن را برگرداند.
یک رویکرد جایگزین، تکرار روی رشته اصلی است به جلو، از ابتدا تا انتها، و نسخه معکوس رشته اصلی را در خود حلقه ایجاد کنید:
example_str = "Hello World!"
reversed_str = ""
for i in example_str:
reversed_str = i + reversed_str
print(reversed_str)
این همان نتیجه ای را به ما می دهد که از تکرار کننده معکوس در حلقه استفاده کنیم.
با استفاده از a در حالی که حلقه
حلقه دیگری که می توانیم برای معکوس کردن یک رشته استفاده کنیم while
حلقه این رویکرد کمی پیچیده تر از سایرین است ، اما می تواند بینش خوبی در روش عملکرد رشته معکوس به شما بدهد روی سطح پایین تر:
example_str = "Hello World!"
reversed_str = ""
i = len(example_str) - 1
while i >= 0:
reversed_str += example_str(i)
i -= 1
print(reversed_str)
که منجر به:
"!dlroW olleH"
نتیجه
همانطور که در این مقاله مشاهده کردیم ، رویکردهای زیادی وجود دارد روی چگونه می توان یک رشته را در پایتون معکوس کرد و هر یک از آنها نقاط قوت و ضعف خود را دارد. به طور کلی ، تنها راهی که باید برای بیشترین زمان انتخاب کنید این است برش دادن اپراتور – کارآمدترین و بیشترین است پایتونیک روشی برای معکوس کردن یک رشته رویکردهای دیگر کارآمدتر هستند ، بنابراین ، قبل از استفاده از آنها دو بار فکر کنید اگر سرعت اجرای در کد شما بسیار مهم است.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-06 08:46:04