آموزش ساختار داده برنامه نویسی شی گرا در پایتون

3 سال پیش
آموزش ساختار داده برنامه نویسی شی گرا در پایتون

آموزش ساختار داده برنامه نویسی شی گرا در پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش ساختار داده برنامه نویسی شی گرا در پایتون خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون

ساختار داده برنامه نویسی شی گرا در پایتون از نظر نحو بسیار بصری هستند و انتخاب وسیعی از عملیات را ارائه می دهند. شما باید ساختار داده های پایتون را بسته به اینکه داده ها شامل چه مواردی هستند ، آیا نیاز به تغییر دارند یا آیا داده های ثابت هستند و نوع دسترسی مورد نیاز است ، مانند ابتدا/انتها/تصادفی و غیره را انتخاب کنید.

لیست ها

یک لیست متنوع ترین نوع ساختار داده را در پایتون نشان می دهد. یک لیست محفظه ای است که مقادیر (آیتم ها یا عناصر) جدا شده از کاما را بین براکت های مربع نگه می دارد. وقتی می خواهیم با چندین مقدار مرتبط کار کنیم، لیست ها مفید هستند. همانطور که لیست ها داده ها را در کنار هم نگه می دارند، ما می توانیم روش ها و عملیات یکسانی را روی چندین مقدار به طور همزمان انجام دهیم. فهرستهای از صفر شروع می شوند و برخلاف رشته ها، لیستها تغییرپذیر هستند.

 

ساختار داده – فهرست

>>>
>>> # Any Empty List
>>> empty_list = []
>>>
>>> # A list of String
>>> str_list = ['Life', 'Is', 'Beautiful']
>>> # A list of Integers
>>> int_list = [1, 4, 5, 9, 18]
>>>
>>> #Mixed items list
>>> mixed_list = ['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
>>> # To print the list
>>>
>>> print(empty_list)
[]
>>> print(str_list)
['Life', 'Is', 'Beautiful']
>>> print(type(str_list))
<class 'list'>
>>> print(int_list)
[۱, ۴, ۵, ۹, ۱۸]
>>> print(mixed_list)
['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']

دسترسی به موارد موجود در لیست پایتون

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

>>> mixed_list = ['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
>>>
>>> # To access the First Item of the list
>>> mixed_list[0]
'This'
>>> # To access the 4th item
>>> mixed_list[3]
۱۸
>>> # To access the last item of the list
>>> mixed_list[-1]
'list'

 

اشیاء خالی

اشیاء خالی ساده ترین و اساسی ترین انواع پایتون هستند. ما چندین بار بدون توجه از آنها استفاده کرده ایم و آن را به هر کلاسی که ایجاد کرده ایم بسط داده ایم. هدف اصلی از نوشتن یک کلاس خالی این است که فعلاً چیزی را مسدود کرده و بعداً آن را گسترش داده و رفتاری را به آن اضافه کنید.

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

>>> #Empty objects
>>>
>>> obj = object()
>>> obj.x = 9
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
obj.x = 9
AttributeError: 'object' object has no attribute 'x'

 

بنابراین از بالا، می توانیم ببینیم که نمی توان هیچ صفتی را بر روی یک شیء که مستقیماً نمونه گیری شده است تنظیم کرد. هنگامی که پایتون به یک شی اجازه می دهد تا ویژگیهای دلخواه داشته باشد، مقدار مشخصی از حافظه سیستم نیاز است تا بتواند هر ویژگی را برای ذخیره نام ویژگی و مقدار آن پیگیری کند. حتی اگر هیچ ویژگی ذخیره نشود ، مقدار مشخصی از حافظه برای ویژگی های جدید احتمالی اختصاص داده می شود.

بنابراین پایتون به طور پیش فرض ویژگی های دلخواه روی شی و چندین برنامه داخلی دیگر را غیرفعال می کند.

>>> # Empty Objects
>>>
>>> class EmpObject:
    pass
>>> obj = EmpObject()
>>> obj.x = 'Hello, World!'
>>> obj.x
'Hello, World!'

 

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

تاپل

تاپل (Tuples) شبیه لیست ها هستند و می توانند عناصر را ذخیره کنند. با این حال، آنها تغییر ناپذیر هستند، بنابراین ما نمی توانیم اشیاء را اضافه، حذف یا جایگزین کنیم. مزایای اصلی که تاپل به دلیل تغییر ناپذیری ارائه می دهد این است که می توانیم از آنها به عنوان کلید در دیکشنری ها یا در مکان های دیگر که یک شی به مقدار هش نیاز دارد استفاده کنیم.

از تاپل برای ذخیره داده ها استفاده می شود و نه رفتار. در صورتی که برای دستکاری یک تاپل به رفتار نیاز دارید ، باید آن را در یک تابع (یا متد روی یک شیء دیگر) که عمل را انجام می دهد ، منتقل کنید.

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

 

>>> stock1 = 'MSFT', 95.00, 97.45, 92.45
>>> stock2 = ('MSFT', 95.00, 97.45, 92.45)
>>> type (stock1)
<class 'tuple'>
>>> type(stock2)
<class 'tuple'>
>>> stock1 == stock2
True
>>>

 

تعریف یک تاپل

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

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

>>> tupl = ('Tuple','is', 'an','IMMUTABLE', 'list')
>>> tupl
('Tuple', 'is', 'an', 'IMMUTABLE', 'list')
>>> tupl[0]
'Tuple'
>>> tupl[-1]
'list'
>>> tupl[1:3]
('is', 'an')

 

متدهای تاپل پایتون 

کد زیر روش های موجود در تاپل پایتون  را نشان می دهد –

>>> tupl
('Tuple', 'is', 'an', 'IMMUTABLE', 'list')
>>> tupl.append('new')
Traceback (most recent call last):
   File "<pyshell#148>", line 1, in <module>
      tupl.append('new')
AttributeError: 'tuple' object has no attribute 'append'
>>> tupl.remove('is')
Traceback (most recent call last):
   File "<pyshell#149>", line 1, in <module>
      tupl.remove('is')
AttributeError: 'tuple' object has no attribute 'remove'
>>> tupl.index('list')
۴
>>> tupl.index('new')
Traceback (most recent call last):
   File "<pyshell#151>", line 1, in <module>
      tupl.index('new')
ValueError: tuple.index(x): x not in tuple
>>> "is" in tupl
True
>>> tupl.count('is')
۱

 

از کدی که در بالا نشان داده شده است ، می توان فهمید که زوج ها تغییرناپذیر هستند و بنابراین –

  • شما نمی توانید عناصر را به یک تاپل اضافه کنید.
  • شما نمی توانید متدی را ضمیمه یا گسترش دهید.
  • شما نمی توانید عناصر را از یک تاپل حذف کنید.
  • تاپل روش حذف یا pop ندارد.
  • شمارش و نمایه روش هایی هستند که به صورت یک دسته در دسترس هستند.

 

دیکشنری

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

تعریف دیکشنری

برای درک دیکشنری، کد زیر را دنبال کنید –

>>> # empty dictionary
>>> my_dict = {}
>>>
>>> # dictionary with integer keys
>>> my_dict = { 1:'msft', 2: 'IT'}
>>>
>>> # dictionary with mixed keys
>>> my_dict = {'name': 'Aarav', 1: [ 2, 4, 10]}
>>>
>>> # using built-in function dict()
>>> my_dict = dict({1:'msft', 2:'IT'})
>>>
>>> # From sequence having each item as a pair
>>> my_dict = dict([(1,'msft'), (2,'IT')])
>>>
>>> # Accessing elements of a dictionary
>>> my_dict[1]
'msft'
>>> my_dict[2]
'IT'
>>> my_dict['IT']
Traceback (most recent call last):
   File "<pyshell#177>", line 1, in <module>
   my_dict['IT']
KeyError: 'IT'
>>>

 

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

ابتدا یک دیکشنری با دو عنصر ایجاد کرده و آن را به متغیر my_dict اختصاص می دهیم. هر عنصر یک جفت کلید-مقدار است و مجموعه ای کامل از عناصر در مهاربندهای مجعد محصور شده است.

عدد ۱ کلید و msft مقدار آن است. به طور مشابه ، ۲ کلید و IT ارزش آن است.

شما می توانید مقادیر را با کلید بدست آورید ، اما نه برعکس. بنابراین وقتی my_dict [‘IT’] را امتحان می کنیم ، یک استثنا ایجاد می کند ، زیرا IT یک کلید نیست.

اصلاح دیکشنری ها

برای درک تغییر دیکشنری، کد زیر را دنبال کنید –

>>> # Modifying a Dictionary
>>>
>>> my_dict
{۱: 'msft', 2: 'IT'}
>>> my_dict[2] = 'Software'
>>> my_dict
{۱: 'msft', 2: 'Software'}
>>>
>>> my_dict[3] = 'Microsoft Technologies'
>>> my_dict
{۱: 'msft', 2: 'Software', 3: 'Microsoft Technologies'}

 

از کد بالا می توانیم مشاهده کنیم که –

  • شما نمی توانید کلیدهای تکراری را در دیکشنری داشته باشید. تغییر مقدار کلید موجود، مقدار قدیمی را حذف می کند.
  • در هر زمان می توانید جفت های کلید-مقدار جدید اضافه کنید.
  • دیکشنری ها هیچ نظمی در مورد نظم در بین عناصر ندارند. آنها مجموعه های ساده بدون نظم هستند.

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

برای درک ترکیب داده ها در دیکشنری، کد زیر را دنبال کنید –

>>> # Mixing Data Types in a Dictionary
>>>
>>> my_dict
{۱: 'msft', 2: 'Software', 3: 'Microsoft Technologies'}
>>> my_dict[4] = 'Operating System'
>>> my_dict
{۱: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System'}
>>> my_dict['Bill Gates'] = 'Owner'
>>> my_dict
{۱: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System',
'Bill Gates': 'Owner'}

 

از کد بالا می توانیم مشاهده کنیم که –

نه تنها رشته ها بلکه مقدار دیکشنری می تواند از هر نوع داده ای شامل رشته ها، اعداد صحیح، از جمله خود دیکشنری باشد.

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

حذف موارد از دیکشنری ها

کد زیر را دنبال کنید تا حذف موارد از دیکشنری درک کنید –

>>> # Deleting Items from a Dictionary
>>>
>>> my_dict
{۱: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System',
'Bill Gates': 'Owner'}
>>>
>>> del my_dict['Bill Gates']
>>> my_dict
{۱: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System'}
>>>
>>> my_dict.clear()
>>> my_dict
{}

 

از کد بالا می توانیم مشاهده کنیم که –

del – به شما امکان می دهد موارد جداگانه را از دیکشنری با کلید حذف کنید.

clear – همه موارد را از دیکشنری حذف می کند.

مجموعه ها

()Set مجموعه ای بدون نظم و فاقد عناصر تکراری است. اگرچه آیتم های جداگانه تغییر ناپذیر هستند، مجموعه خود تغییرپذیر است، یعنی می توانیم عناصر/موارد را از مجموعه اضافه یا حذف کنیم. ما می توانیم عملیات ریاضی مانند اتحاد ، تقاطع و غیره را با مجموعه انجام دهیم.

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

ایجاد یک مجموعه

مجموعه ای با قرار دادن همه موارد (عناصر) در داخل {} ایجاد می شود ، که با کاما از هم جدا می شوند یا با استفاده از مجموعه تابع توکار ()Set. خطوط کد زیر را دنبال کنید –

>>> #set of integers
>>> my_set = {1,2,4,8}
>>> print(my_set)
{۸, ۱, ۲, ۴}
>>>
>>> #set of mixed datatypes
>>> my_set = {1.0, "Hello World!", (2, 4, 6)}
>>> print(my_set)
{۱٫۰, (۲, ۴, ۶), 'Hello World!'}
>>>

 

روش هایی برای مجموعه ها

برای درک روشهای مجموعه، کد زیر را دنبال کنید –

>>> >>> #METHODS FOR SETS
>>>
>>> #add(x) Method
>>> topics = {'Python', 'Java', 'C#'}
>>> topics.add('C++')
>>> topics
{'C#', 'C++', 'Java', 'Python'}
>>>
>>> #union(s) Method, returns a union of two set.
>>> topics
{'C#', 'C++', 'Java', 'Python'}
>>> team = {'Developer', 'Content Writer', 'Editor','Tester'}
>>> group = topics.union(team)
>>> group
{'Tester', 'C#', 'Python', 'Editor', 'Developer', 'C++', 'Java', 'Content
Writer'}
>>> # intersets(s) method, returns an intersection of two sets
>>> inters = topics.intersection(team)
>>> inters
set()
>>>
>>> # difference(s) Method, returns a set containing all the elements of
invoking set but not of the second set.
>>>
>>> safe = topics.difference(team)
>>> safe
{'Python', 'C++', 'Java', 'C#'}
>>>
>>> diff = topics.difference(group)
>>> diff
set()
>>> #clear() Method, Empties the whole set.
>>> group.clear()
>>> group
set()
>>>

 

عملگرهای مجموعه

کد زیر را برای درک عملگرهای مجموعه ها دنبال کنید –

>>> # PYTHON SET OPERATIONS
>>>
>>> #Creating two sets
>>> set1 = set()
>>> set2 = set()
>>>
>>> # Adding elements to set
>>> for i in range(1,5):
   set1.add(i)
>>> for j in range(4,9):
   set2.add(j)
>>> set1
{۱, ۲, ۳, ۴}
>>> set2
{۴, ۵, ۶, ۷, ۸}
>>>
>>> #Union of set1 and set2
>>> set3 = set1 | set2 # same as set1.union(set2)
>>> print('Union of set1 & set2: set3 = ', set3)
Union of set1 & set2: set3 = {1, 2, 3, 4, 5, 6, 7, 8}
>>>
>>> #Intersection of set1 & set2
>>> set4 = set1 & set2 # same as set1.intersection(set2)
>>> print('Intersection of set1 and set2: set4 = ', set4)
Intersection of set1 and set2: set4 = {4}
>>>
>>> # Checking relation between set3 and set4
>>> if set3 > set4: # set3.issuperset(set4)
   print('Set3 is superset of set4')
elif set3 < set4: #set3.issubset(set4)
   print('Set3 is subset of set4')
else: #set3 == set4
   print('Set 3 is same as set4')
Set3 is superset of set4
>>>
>>> # Difference between set3 and set4
>>> set5 = set3 - set4
>>> print('Elements in set3 and not in set4: set5 = ', set5)
Elements in set3 and not in set4: set5 = {1, 2, 3, 5, 6, 7, 8}
>>>
>>> # Check if set4 and set5 are disjoint sets
>>> if set4.isdisjoint(set5):
   print('Set4 and set5 have nothing in common\n')
Set4 and set5 have nothing in common
>>> # Removing all the values of set5
>>> set5.clear()
>>> set5 set()

 

منبع.

 

لیست جلسات آموزش برنامه نویسی شی گرا در پایتون

  1. آموزش برنامه نویسی شی گرا در پایتون
  2. آموزش مقدماتی برنامه نویسی شی گرا در پایتون
  3. آموزش راه اندازی محیط برنامه نویسی شی گرا در پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه