جلسه ششم دوره پایتون – { رشته ها در پایتون }

مقدمه

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

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

رشته چیست؟

رشته ها در پایتون مجموعه ای به هم پیوسته از کاراکترها هستند که با سینگل کوتیشن (‘)  یا دابل کوتیشن (“) مشخص می شوند. چون پایتون نوع داده ی مخصوصی برای کاراکترها ندارد ، کاراکترها را با یک رشته تک حرفی نشان می دهند.

ساخت رشته ها:

>>> name = "tom" # a string
>>> mychar = 'a' # a character

البته با روش زیر نیز می توانید یک رشته را بسازید:

>>> name1 = str() # this will create empty string object
>>> name2 = str("newstring") # string object containing 'newstring'

جایگاه یک رشته ثابت در حافظه ، ثابت می باشد. 

اجازه دهید این موضوع را با یک مثال مطرح کنیم. 

>>> str1 = "welcome"
>>> str2 = "welcome"

در تکه کد بالا هم str1 و هم str2 به welcome اشاره می کنند که این welcome در محل خاصی از حافظه ذخیره شده است. در اینجا میخواهیم تست کنیم که آیا str1 و str2 در حافظه هم به یک محل خاص اشاره می کنند یا خیر؟ این کار را میتوانیم به کمک دستور id انجام دهیم. 

توضیح دستور id : هر object در پایتون در محلی خاص از حافظه ذخیره شده است. با کمک دستور id میتوانیم محل دقیق ذخیره شدن آن object را در حافظه بدست آوریم. 

حال کد زیر را در نظر بگیرید:

>>> id(str1)
78965411
>>> id(str2)
78965411

همانطور که میبینید هر دو str1 و str2 به محل یکسانی از حافظه اشاره می کنند. پس هر دوی آنها هم به یک شی اشاره می کنند. 

حال اجازه دهید که کمی تغییرات در str1 انجام دهیم و یک رشته دیگر را به آن نیز اضافه کنیم. در این صورت خواهیم داشت:

>>> str1 += " mike"
>>> str1
welcome mike
>>> id(str1)
>>> 78965579

همانطور که می بینید ، این بار str1 به خانه ای متفاوت از حافظه اشاره می کند. این موضوع بدین معنی است که با اضافه شدن یک واژه جدید به رشته مورد نظر ، در واقع یک رشته جدید را ایجاد میکند. البته این موضوع تنها منحصر به string ها نمی باشد و در مورد نوع داده هایی مثل int نیز صدق می کند.

عملگرهای مربوط به رشته ها

همونطور که گفتیم رشته ها مجموعه ای از کاراکترها هستند که به یکدیگر متصل شده اند. نکته ای که در اینجا وجود دارد این است که شماره کاراکترها از 0 شروع می شوند. یعنی کاراکتر اول با شماره صفر ، کاراکتر دوم با شماره 1 ، کاراکتر سوم با شماره 2 و …. است. بنابراین اگر بخواهیم به کاراکتر اول name در بالا که به رشته tom اشاره می کند ،  دسترسی داشته باشیم ، میتوانیم بنویسیم:

>>> name[0] #
t

با کمک اپراتور + میتوانیم رشته ها را به یکدیگر بچسبانیم. به عنوان مثال داریم:

>>> s = "tom and " + "jerry"
>>> print(s)
tom and jerry

علاوه بر آن عملگر * ، تعداد تکرارهای یک رشته را تعیین می کند. مثلا:

>>> s = "this is bad spam " * 3
>>> print(s)
this is bad spam this is bad spam this is bad spam

برش رشته ها:

به کمک عملگر [] که با نام slicing operator نیز مشخص می شود ، میتوان یک زیر رشته را از رشته اصلی ایجاد کرد. فرم کلی این اپراتور به صورت زیر است:

s[start:end]

خروجی دستور بالا رشته ای که شماره آن از start شروع می شود و تا end-1 ادامه دارد. اجازه دهید برای درک بهتر این مفهوم چند مثال ارایه دهیم:

>>> s = "Welcome"
>>> s[1:3]
el

مثال های زیر نیز میتوانند این موضوع را روشن تر کنند:

>>> s = "Welcome"
>>> s[ : 6]
'Welcom'
 
>>> s[4 : ]
'ome'
 
>>> s[1 : -1]
'elcom'

 

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

 توابع ord و chr :

  • تابع ord : به کمک تابع ord میتوان کد اسکی یک کاراکتر را دریافت کرد.
  • تابع chr : تابع chr دقیقا عکس تابع ord است. یعنی کد اسکی را میگیرد و کاراکتر مربوط به کد اسکی را به ما نشان می دهد.

مثال های زیر نحوه عملکرد این دو تابع را مشخص می کنند:

>>> ch = 'b'
>>> ord(ch)
98
>>> chr(97)
'a'
>>> ord('A')
65

 معرفی چند تابع مربوط به رشته ها:

در جدول زیر چند تابع مربوط به رشته ها به همراه توضیحی از عملکرد آن ها آورده شده است:

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

مثال های زیر کارکرد توابع بالا را نشان می دهند:

>>> len("hello")
5
>>> max("abc")
'c'
>>> min("abc")
'a'

 

 عملگرهای in و not in :

به کمک عملگرهای in و not in میتوانیم چک کنیم که آیا یک رشته درون رشته ای دیگر وجود دارد یا نه . این عملگرها با نام عملگرهای membership نیز شناخته می شوند. مثال های زیر نحوه کارکردن این اپراتورها را مشخص می کنند:

>>> s1 = "Welcome"
>>> "come" in s1
True
>>> "come" not in s1
False
>>>

 مقایسه رشته :

به کمک عمگرهای  < و >  و  == و =! و  =< و => میتوان دو رشته را با یکدیگر مقایسه کرد. منظور از مقایسه رشته ها در اینجا مقایسه از نظر مقادیر کدهای اسکی آنهاست. برای درک مفهوم مقایسه دو رشته به مثال زیر توجه کنید:

فرض کنید رشته str1 برابر با “Mary” و رشته str2 برابر با “Mac” باشد. حال اگر بخواهیم این دو رشته را با یکدگیر مقایسه کنیم در این صورت این مقایسه را به صورت زیر انجام می دهیم. 

ابتدا از حرف اول هر کدام از رشته ها شروع می کنیم. چون حرف اول یکی است پس تا اینجا این دو رشته با یکدیگر برابر هستند. حال به سراغ حرف دوم می رویم. چون حرف دوم هر دو نیز برابر با a است پس تا حرف دوم نیز این دو رشته برابری می کنند. حرف بعد حرف سوم است. اما حرف سوم str1 برابر با r و حرف سوم str2 برابر با c است. چون کد اسکی مربوط به کاراکتر r بزرگتر از کد اسکی مربوط به کاراکتر c است ، بنابراین str1 از str2 بزرگتر است. مثال های زیر این موضوع مقایسه رشته ها را بهتر نشان می دهند:

>>> "tim" == "tie"
False
>>> "free" != "freedom"
True
>>> "arrow" > "aron"
True
>>> "right" >= "left"
True
>>> "teeth" < "tee"
False
>>> "yellow" <= "fellow"
False
>>> "abc" > ""
True
>>>

 

 چک کردن رشته ها:

کلاس string در زبان پایتون دارای متدهای مختلفی است که به کمک آن ها میتوان یک سری موارد را در رشته ها چک کرد. در جدول زیر این متدها به همراه نحوه کارکرد آنها آورده شده است:

در مثال های زیر نیز هر کدام از متدهای بالا را تست کرده ایم. 

>>> s = "welcome to python"
>>> s.isalnum()
False
>>> "Welcome".isalpha()
True
>>> "2012".isdigit()
True
>>> "first Number".isidentifier()
False
>>> s.islower()
True
>>> "WELCOME".isupper()
True
>>> "  \t".isspace()
True

 تبدیل رشته ها:

در جدول زیر تعدادی تابع آورده شده است که به کمک این توابع میتوان حضور یک زیر رشته در یک رشته دیگر را بررسی کرد. 

مثال زیر نیز کاربرد هر یک از جداول بالا را نشان می دهد. 

>>> s = "welcome to python"
>>> s.endswith("thon")
True
>>> s.startswith("good")
False
>>> s.find("come")
3
>>> s.find("become")
-1
>>> s.rfind("o")
15
>>> s.count("o")
3
>>>

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

اشتراک گذاری:
مطالب زیر را حتما بخوانید

دیدگاهتان را بنویسید