Python is my life !!!

پایتون

Python is my life !!!

پایتون

Python is my life !!!

برنامه نویس و طراح اپلیکیشن های تحت وب و مسلط به پایتون، جاوا اسکریپت، html، css، Angularjs و فریمورک Flask هستم ...

طبقه بندی موضوعی
بایگانی

۱ مطلب با کلمه‌ی کلیدی «تغییر_یک_کاراکتر_در_یک_رشته» ثبت شده است

در ابتدا باید این را بدانید که رشته ها در پایتون غیرقابل تغییر می باشند و تغییر یک کاراکتر از یک رشته در پایتون به سادگی انجام این کار در یک لیست نیست.

اما نگران نباشید این کار چندان هم دشوار نیست.

برای درک بهتر ابتدا همین کار را در یک لیست انجام می دهیم:

>>> my_list = ['a', 'b', 'c', 'd']
>>> my_list[2] = 'e'
>>> my_list
['a', 'b', 'e', 'd']

دیدید که در لیست به سادگی میتوان این کار را انجام داد اما اگر همین اعمال را برای رشته ها انجام دهید با TypeError مواجه خواهید شد:

>>> my_str = 'abcd'
>>> my_str[2] = 'e'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

برای انجام چنین کاری روش های متفاوتی وجود دارد که در این پست به دو روش اشاره خواهیم کرد.

روش اول:

در این روش ابتدا رشته ی مورد نظر را به لیست تبدیل کرده و سپس بر اساس ایندکس کاراکتر مورد نظر آن را تغییر می دهیم و در آخر به کمک متد join لیست را به یک استرینگ تبدیل می کنیم.

>>> my_str = 'abcd'
>>> my_list = list(my_str)
>>> my_list[2] = 'e'
>>> my_str = ''.join(my_list)
>>> my_str
'abed'

روش دوم:

این روش کمی از روش اول ساده تر است و همچین با انجام تست های لازم متوجه خواهید که سریعتر از آن نیز می باشد.

>>> my_str = 'abcd'
>>> my_str = my_str[:2] + 'e' + my_str[3:]
>>> my_str
'abed'

کدام یکی سریعتر است؟

روش اول:

>>> timeit.timeit("my_str = 'abcd'; my_list = list(my_str); my_list[2] = 'e'; my_str = ''.join(my_list)", number=10000000)
2.8461143329986953

روش دوم:

>>> timeit.timeit("my_str = 'abcd'; my_str = my_str[:2] + 'e' + my_str[3:]", number=10000000)
1.637490514000092

* با توجه به تست زمان در هر دو روش این موضوع اثبات میشود که روش دوم سریعتر از روش اول می باشد.

  • Saeid