ساختارهای داده‌ای در پایتون (بخش دوم)

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی پایتون 1 مارس 2025
اشتراک گذاری

دیکشنری‌ها و متدهای آن (keys(), values(), items())


دیکشنری (Dictionary) یکی از انواع داده‌ای در پایتون است که اطلاعات را به صورت کلید-مقدار (Key-Value) ذخیره می‌کند. برخلاف لیست‌ها که مقادیرشان به صورت ایندکس مشخص می‌شود، در دیکشنری‌ها از کلید برای دسترسی به مقدار استفاده می‌شود.


ایجاد دیکشنری


my_dict = {
"نام": "علی",
"سن": 25,
"شغل": "برنامه‌نویس"
}

متد keys()


این متد تمامی کلیدهای دیکشنری را برمی‌گرداند.


print(my_dict.keys()) # خروجی: dict_keys(['نام', 'سن', 'شغل'])

متد values()


این متد تمامی مقادیر دیکشنری را برمی‌گرداند.


print(my_dict.values()) # خروجی: dict_values(['علی', 25, 'برنامه‌نویس'])

متد items()


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


print(my_dict.items()) # خروجی: dict_items([('نام', 'علی'), ('سن', 25), ('شغل', 'برنامه‌نویس')])



مجموعه‌ها (Set) و تفاوت آن با دیگر ساختارهای داده‌ای


مجموعه (Set) در پایتون یک نوع داده‌ای است که مقادیر یکتا و بدون ترتیب را ذخیره می‌کند.


ویژگی‌های مجموعه‌ها:



  • تکراری ندارند: مقدارهای تکراری را حذف می‌کنند.

  • بدون ترتیب هستند: ترتیب مقادیر در مجموعه مهم نیست.

  • دسترسی با ایندکس ندارند: مانند لیست‌ها نمی‌توان مقدار خاصی را با ایندکس انتخاب کرد.


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


my_set = {1, 2, 3, 4, 4, 5}
print(my_set) # خروجی: {1, 2, 3, 4, 5} (عدد 4 تکراری حذف شد)

عملیات روی مجموعه‌ها


افزودن مقدار به مجموعه:


my_set.add(6)
print(my_set) # خروجی: {1, 2, 3, 4, 5, 6}

حذف مقدار از مجموعه:


my_set.remove(3)
print(my_set) # خروجی: {1, 2, 4, 5, 6}

عملیات ریاضی روی مجموعه‌ها:


set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 | set2) # اجتماع: {1, 2, 3, 4, 5}
print(set1 & set2) # اشتراک: {3}
print(set1 - set2) # تفاضل: {1, 2}

تفاوت با لیست‌ها و تاپل‌ها:



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

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

  • لیست‌ها قابل تغییرند، اما تاپل‌ها و مجموعه‌ها نیمه‌قابل‌تغییرند.




تفاوت Shallow Copy و Deep Copy در لیست‌ها


وقتی یک لیست را در پایتون کپی می‌کنیم، دو روش برای این کار وجود دارد:



  1. Shallow Copy (کپی سطحی)

  2. Deep Copy (کپی عمیق)


Shallow Copy (کپی سطحی)


در این روش، یک کپی از لیست ایجاد می‌شود، اما اگر لیست شامل لیست‌های تو در تو باشد، این لیست‌های داخلی به صورت مرجع (Reference) کپی می‌شوند.


import copy
list1 = [[1, 2], [3, 4]]
list2 = copy.copy(list1) # کپی سطحی
list2[0][0] = 99
print(list1) # خروجی: [[99, 2], [3, 4]]
print(list2) # خروجی: [[99, 2], [3, 4]]

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


Deep Copy (کپی عمیق)


در این روش، یک کپی کامل از لیست و تمامی لیست‌های تو در تو ساخته می‌شود، به طوری که تغییر در کپی اصلی، تغییری در نسخه‌ی جدید ایجاد نکند.


list1 = [[1, 2], [3, 4]]
list3 = copy.deepcopy(list1) # کپی عمیق
list3[0][0] = 99
print(list1) # خروجی: [[1, 2], [3, 4]]
print(list3) # خروجی: [[99, 2], [3, 4]]

تفاوت کلی:



  • Shallow Copy فقط خود شیء را کپی می‌کند و زیرشیءهای داخل آن را به همان مراجع قبلی لینک می‌کند.

  • Deep Copy تمامی زیرشیءها را نیز جداگانه کپی کرده و یک کپی کاملاً مستقل از داده‌ها می‌سازد.

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.