۴ ساختار داده پایتون که باید بدانید

شکل ۱.  ساختار داده‌ها
شکل ۱. ساختار داده‌ها
منتشر شده در towardsdatascience به تاریخ ۱۹ جولای ۲۰۲۱
لینک منبع 4 Must-Know Python Data Structures

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

پایتون دارای ۴ ساختار داده داخلی است:

  • فهرست
  • ست
  • تاپل
  • لغت‌نامه

همه آن‌ها ویژگی‌های متفاوتی از نظر ذخیره‌سازی و دسترسی به داده‌ها دارند. این تفاوت‌ها مهم هستند زیرا آنچه برای یک کار خاص بهتر است به آن‌ها بستگی دارد. نحوه تعامل یا دستکاری این ساختارهای داده نیز متفاوت است.

فهرست

فهرست مجموعه‌ای از اشیا است که در براکت‌های مربعی نشان‌داده شده‌است.

mylist = [1, 2, "a", True]

  • از لیست‌ها می توان برای ذخیره‌سازی اشیا با هر نوع داده یا ترکیبی از انواع داده استفاده کرد.
  • لیست‌ها تغییر ناپذیر هستند. می‌توانیم آیتم‌های جدید را به یک لیست اضافه کنیم یا آیتم‌های موجود را حذف کنیم.

mylist.append(5)
mylist
[1, 2, 'a', True, 5]mylist += ["b"]
mylist
[1, 2, 'a', True, 5, 'b']mylist.insert(0, "first")
mylist
['first', 1, 2, 'a', True, 5, 'b']mylist.remove(2)
mylist
['first', 1, 'a', True, 5, 'b']

روش درج آیتم جدید را در شاخص مشخص‌شده اضافه می‌کند.

  • لیست ها به ترتیب هستند بنابراین، ما می‌توانیم با موقعیت آن‌ها به آیتم‌ها دسترسی داشته باشیم.

mylist[0]
'first'mylist[-1]
'b'mylist[:3]
['first', 1, 'a']

  • ما می‌توانیم چندین لیست را با استفاده از روش بسط یا عملیات «+ =» ترکیب کنیم.

first = [1, 2, 3]
second = [4, 5, 6]
first += second
print(first)
[1, 2, 3, 4, 5, 6]
first.extend(second)
print(first)
[1, 2, 3, 4, 5, 6, 4, 5, 6]

اگر شما روش ضمیمه را برای این عملیات در نظر بگیرید، لیست جدید به عنوان یک آیتم جدید اضافه خواهد شد.

first = [1, 2, 3]
second = [4, 5, 6]
first.append(second)
print(first)
[1, 2, 3, [4, 5, 6]]

ست

ست مجموعه‌ای از اشیا است که در آکولادهای فردار نشان داده می‌شود.

  • ست‌ها حاوی آیتم‌های منحصر به فرد هستند. حتی اگر سعی کنید آیتم‌های تکراری را در یک ست ذخیره کنید، تنها یکی از هر شی متمایز وجود خواهد داشت.

myset = {1, 2, 3, 3, 4}print(myset)
{1, 2, 3, 4}

  • آیتم‌های موجود در یک ست باید قابل‌قبول باشند. از یک نظر، hashable به معنای تغییر ناپذیر است. تعریف hashable در مستندات پایتون به شرح زیر است:

یک شی اگر یک مقدار هش داشته باشد که هرگز در طول عمر خود تغییر نکند (به یک روش __hash__() نیاز دارد) hashable است و می‌تواند با دیگر اشیا مقایسه شود (به یک روش __eq__() نیاز دارد). اشیا Hashable که برابر با یکدیگر مقایسه می‌شوند باید دارای مقدار هش یکسانی باشند.

برای مثال، ما نمی‌توانیم از یک لیست در یک مجموعه استفاده کنیم زیرا لیست‌ها تغییر ناپذیر هستند.

  • ۷تاکید بر این نکته مهم است که ست‌ها حاوی آیتم‌های تغییر ناپذیر هستند اما خود یک ست تغییر ناپذیر است. بنابراین، می‌توانیم آیتم‌های جدید را به یک ست اضافه کنیم و همچنین آیتم‌های موجود را حذف کنیم.

myset = {1, 2, 3, 4, 5}
myset.add(6)
print(myset)
{1, 2, 3, 4, 5, 6}myset.remove(2)
{1, 3, 4, 5, 6}

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

myset = {1, 2, 3}
newset = {3, 4, 5}
myset.update(newset)print(myset)
{1, 2, 3, 4, 5}

تاپل

تاپل مجموعه‌ای از اشیا است که در پرانتز ارائه شده‌است.

mytuple = (1, 2, 2, 3)print(mytuple)
(1, 2, 2, 3)

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

a = (1, 2, 3)
b = (1, "a", "b")a + b
(1, 2, 3, 1, 'a', 'b')

  • تاپل‌ها مرتب شده‌اند تا بتوانیم عملیات نمایه‌سازی و برش را بر روی تاپل‌ها انجام دهیم.

mytuple = (1, 2, "a", 4, [1,8])mytuple[0]
1mytuple[2:4]
('a', 4)

  • یک تاپل را می توان تنها با نوشتن مقادیر جدا شده توسط کاما ایجاد کرد.

mytuple = 2, 6, 5print(mytuple)
(2, 6, 5)

لغت‌نامه

فرهنگ لغت مجموعه‌ای مرتب نشده از جفت‌های key-value است.

mydict = {
"A": 1,
"B": [1, 2, 3],
"C": ("foo","bar")
}print(mydict)
{'A': 1, 'B': [1, 2, 3], 'C': ('foo', 'bar')}

  • کلیدهای لغت‌نامه می‌توانند به عنوان آدرس‌های مقادیر در نظر گرفته شوند. آن‌ها باید منحصر به فرد و تغییرناپذیر باشند. مقادیر می‌توانند از هر نوعی باشند.
  • می توانیم یک جفت key-value جدید به شرح زیر اضافه کنیم:

mydict["D"] = [10, 20, 30]print(mydict)
{'A': 1, 'B': [1, 2, 3], 'C': ('foo', 'bar'), 'D': [10, 20, 30]}

  • می‌توانیم از روش پاپ یا کلمه کلیدی del برای حذف یک جفت مقدار کلید از یک فرهنگ لغت استفاده کنیم.

mydict.pop("A")
1print(mydict)
{'B': [1, 2, 3], 'C': ('foo', 'bar'), 'D': [10, 20, 30]}del mydict["B"]print(mydict)
{'C': ('foo', 'bar'), 'D': [10, 20, 30]}

  • روش کلیدها و مقادیر را می توان به ترتیب برای استخراج تمام کلیدها یا مقادیر به کار برد.

mydict.keys()
dict_keys(['C', 'D'])mydict.values()
dict_values([('foo', 'bar'), [10, 20, 30]])

  • ما می‌توانیم یک فرهنگ لغت را به فرمت جدولی تبدیل کنیم. با این حال، طول مقادیر باید یک‌سان باشد.

mydict = {
"A": [1, 2, 3, 4],
"B": [10, 20, 30, 40],
"C": (True, False, False, True)
}import pandas as pddf = pd.DataFrame(mydict)
df

نتیجه‌گیری

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

متشکرم که مطالعه کردید.

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