در پایتون ، یک رشته دنباله ای از کاراکترهای Unicode است. اگرچه پایتون از توابع متعددی برای استفاده از رشته ، پشتیبانی می کند ، اما تابع یا روش داخلی ای ندارد که به طور صریح برای معکوس کردن یک رشته در پایتون طراحی شده باشد.
>> 'Linuxize'.reverse()
Traceback (most recent call last): File "<input>", line 1, in <module> AttributeError: 'str' object has no attribute 'reverse'
معکوس کردن رشته ، یک برنامه رایج در برنامه نویسی نیست و عموماً در برنامه نویسی interviews استفاده می شود. در این مقاله با ما همراه باشید تا شما عزیزان را با چندین روش مختلف برای معکوس کردن یک رشته در پایتون آشنا کنیم.
درک نحوه عملکرد نمایه سازی در پایتون برای انجام عملیات String Slice بسیار مهم است. به طور کلی ، شماره های دایرکتوری برای دسترسی به کاراکترهای خاص در یک رشته استفاده می شود. دو نوع نمایه سازی مثبت و منفی وجود دارد.
شما می توانید به کاراکتر n ، یا از طریق شماره شاخص مثبت ۲ یا از طریق شماره شاخص منفی ۶ دسترسی داشته باشید:
>> print('Linuxize'[2])
n
>> print('Linuxize'[-6])
n
ما می توانیم طیف وسیعی از کاراکترهای یک رشته را با استفاده از روش slicing فراخوانی کنیم. slicing عملیاتی است که دنباله یک زیر رشته را از رشته داده شده اکسترکت می کند.
string[start:stop:step]
نتیجه slicing یک رشته جدید حاوی عناصر اکسترکت شده است ، و رشته اصلی اصلاح نشده است. برای معکوس کردن یک رشته در پایتون با استفاده از slicing ، آرگومان های شروع و توقف را حذف کرده و از مرحله منفی ۱ استفاده کنید. افزایش مرحله منفی ۱ بدین معنی است که slicing از آخرین عنصر شروع شده و در اولین عنصر به پایان می رسد و در نتیجه یک رشته معکوس ایجاد می شود.
>> print('Linuxize'[::-1])
ezixuniL
همچنین می توانید یک تابع سفارشی تعریف کرده و از آن برای معکوس کردن رشته ها استفاده کنید:
def rev_str_thru_slicing(str_): return str_[::-1] INPUT_STRING = "Linuxize" if __name__ == '__main__': print("INPUT STRING -", INPUT_STRING) print("REVERSED STRING -", rev_str_thru_slicing(INPUT_STRING))
Input String - Linuxize Reversed String using Slicing - ezixuniL
تابع معکوس () رشته را به ترتیب معکوس می کند و یک اشاره گر معکوس را برمی گرداند. در مثال زیر ، elements اشاره گر معکوس با استفاده از عملگر join () به یک رشته خالی اضافه می شوند:
def rev_str_thru_join_revd(STR): return "".join(reversed(STR)) INPUT_STRING = "Linuxize" if __name__ == '__main__': print("INPUT STRING -", INPUT_STRING) print("RESERVED STRING THROUGH JOIN & REVERSED", rev_str_thru_join_revd(INPUT_STRING))
Input String - Linuxize Reserved String Through Join & Reserved Methods - ezixuniL
برای معکوس کردن یک رشته در پایتون با روش list reverse () ، ابتدا باید رشته را با استفاده از سازنده لیست ، به لیست تبدیل کرد. سپس آیتم های لیست با روش reverse () برعکس می شوند و در نهایت ، آیتم های لیست با استفاده از متد () join به یک رشته متصل می شوند. به عنوان مثال:
def rev_str_thru_list_reverse(STR): lst = list(STR) lst.reverse() return(''.join(lst)) INPUT_STRING = "Linuxize" if __name__ == '__main__': print("Input String -", INPUT_STRING) print("Reserved String Through List", rev_str_thru_list_reverse(INPUT_STRING))
Input String - Linuxize Reserved String Through List Reverse Method - ezixuniL
در پایتون ، یک تابع بازگشتی تابعی است که تا زمانی که شرطی برآورده نشود ، خود را فرا می خواند. در قطعه کد زیر ، تابع rev_str_thru_recursion خود را فرا می خواند تا طول رشته از صفر بیشتر شود. در هر فراخوانی ، رشته sliced می شود و فقط اولین کاراکتر باقی می ماند. بعداً ، با sliced characters ترکیب می شود:
def rev_str_thru_recursion(STR): if len(STR) == 0: return STR else: return rev_str_thru_recursion(STR[1:]) + STR[0] INPUT_STRING = "Linuxize" if __name__ == '__main__': print("INPUT STRING -", INPUT_STRING) print("RESERVED STRING THROUGH RECURSION", rev_str_thru_recursion(INPUT_STRING))
در این بخش ، ما یک مقایسه ساده بین این چهار روش تعریف شده انجام می دهیم تا کارایی آنها مشخص شود. ما عملکرد را با استفاده از یک ماژول پایتون به نام “timeit” تجزیه و تحلیل می کنیم.
Comparison Ratio Calc | Execution Time | Methods |
---|---|---|
۱x | ۰٫۲۳ | Slicing |
۷x | ۱٫۶۳ | List Reverse |
۷٫۵x | ۱٫۷۳ | Join & Reserved |
۸۳x | ۱۹٫۱۹ | Recursion |
جدول بالا نشان می دهد که Slicing هفت برابر سریعتر از لیست معکوس است ، لیست معکوس ۷٫۵ برابر سریعتر از Join & Reserved است و Join & Reserved هشتاد و سه برابر سریعتر از روش بازگشتی است. بنابراین Slicing سریعترین و بهترین راه برای معکوس کردن یک رشته در پایتون است.
پایتون هیچ عملکرد داخلی برای معکوس کردن رشته ندارد ، اما می توانیم از روش های دیگر برای معکوس کردن یک رشته در پایتون استفاده کنیم. تجزیه و تحلیل نسبی نشان داد که روش Slicing سریعترین راه برای معکوس کردن یک رشته است.
امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊