الگوریتم اول

لطفا صبر کنید...

کار با مجموعه‌ها و داده‌های پیچیده (لیست‌ها، تاپل‌ها، مجموعه‌ها و دیکشنری‌ها) در پایتون

در پایتون، انواع مختلفی از داده‌ها برای ذخیره‌سازی و کار با مجموعه‌ای از مقادیر وجود دارد. این داده‌های پیچیده شامل لیست‌ها (Lists)، تاپل‌ها (Tuples)، مجموعه‌ها (Sets) و دیکشنری‌ها (Dictionaries) هستند. هرکدام از این ساختارها ویژگی‌ها و کاربردهای خاص خود را دارند که در برنامه‌نویسی برای حل مسائل مختلف می‌توان از آن‌ها استفاده کرد.

۱. لیست‌ها (Lists)

لیست‌ها یکی از پرکاربردترین انواع داده در پایتون هستند. لیست‌ها ترتیب‌دار، تغییرپذیر و می‌توانند شامل انواع مختلفی از داده‌ها باشند. برای تعریف لیست از کروشه ([]) استفاده می‌کنیم.

ویژگی‌ها:

  • ترتیب‌دار (Ordered).
  • قابل تغییر (Mutable).
  • می‌توانند مقادیر تکراری داشته باشند.

تعریف لیست و دسترسی به عناصر:

my_list = [1, 2, 3, 4, 5]
print(my_list[0])  # دسترسی به اولین عنصر لیست (خروجی: 1)

اضافه کردن و حذف عنصر به لیست:

my_list.append(6)  # اضافه کردن 6 به انتهای لیست
print(my_list)  # خروجی: [1, 2, 3, 4, 5, 6]

my_list.remove(3)  # حذف اولین عنصر با مقدار 3
print(my_list)  # خروجی: [1, 2, 4, 5, 6]

برش (Slicing) در لیست‌ها:

sub_list = my_list[1:4]  # گرفتن زیرلیست از اندیس 1 تا 3
print(sub_list)  # خروجی: [2, 4, 5]

۲. تاپل‌ها (Tuples)

تاپل‌ها مشابه لیست‌ها هستند اما تفاوت اصلی آن‌ها این است که غیرقابل تغییر (Immutable) هستند، یعنی نمی‌توانیم بعد از تعریف یک تاپل، عناصر آن را تغییر دهیم. برای تعریف یک تاپل از پرانتز (()) استفاده می‌کنیم.

ویژگی‌ها:

  • غیرقابل تغییر (Immutable).
  • ترتیب‌دار.
  • می‌توانند مقادیر تکراری داشته باشند.

تعریف تاپل و دسترسی به عناصر:

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[2])  # دسترسی به سومین عنصر (خروجی: 3)

سعی در تغییر یک عنصر از تاپل (باعث ایجاد خطا می‌شود):

# این خط خطا می‌دهد زیرا تاپل غیرقابل تغییر است
# my_tuple[0] = 10

۳. مجموعه‌ها (Sets)

مجموعه‌ها در پایتون شبیه به لیست‌ها و تاپل‌ها هستند اما ویژگی خاصی دارند. این ساختار داده‌ای غیرترتیب‌دار (Unordered) است و نمی‌تواند مقادیر تکراری داشته باشد. برای تعریف یک مجموعه از آکولاد ({}) استفاده می‌کنیم.

ویژگی‌ها:

  • غیرترتیب‌دار (Unordered).
  • غیرقابل تغییر در ساختار (Mutable).
  • نمی‌توانند مقادیر تکراری داشته باشند.

تعریف مجموعه و استفاده از آن:

# این خط خطا می‌دهد زیرا تاپل غیرقابل تغییر است
# my_tuple[0] = 10

اضافه کردن و حذف عنصر از مجموعه:

my_set.add(6)  # اضافه کردن 6 به مجموعه
print(my_set)  # خروجی: {1, 2, 3, 4, 5, 6}

my_set.remove(3)  # حذف عنصر 3
print(my_set)  # خروجی: {1, 2, 4, 5, 6}

توجه: اگر سعی کنید عنصری را که در مجموعه وجود ندارد حذف کنید، خطا می‌دهید. برای جلوگیری از خطا می‌توانید از discard() استفاده کنید که خطا نمی‌دهد.

۴. دیکشنری‌ها (Dictionaries)

دیکشنری‌ها یا واژه‌نامه‌ها مجموعه‌ای از جفت‌های کلید-مقدار هستند. برای تعریف دیکشنری از آکولاد ({}) استفاده می‌کنیم. کلیدها باید منحصر به فرد و غیرقابل تغییر باشند، در حالی که مقادیر می‌توانند هر نوع داده‌ای باشند.

ویژگی‌ها:

  • غیرترتیب‌دار (Unordered).
  • تغییرپذیر (Mutable).
  • کلیدها باید منحصر به فرد و غیرقابل تغییر باشند.

تعریف دیکشنری و دسترسی به مقادیر:

my_dict = {"name": "Alice", "age": 25}
print(my_dict["name"])  # دسترسی به مقدار با کلید "name" (خروجی: Alice)

اضافه کردن و حذف جفت کلید-مقدار:

my_dict["city"] = "New York"  # اضافه کردن یک جفت کلید-مقدار جدید
print(my_dict)  # خروجی: {'name': 'Alice', 'age': 25, 'city': 'New York'}

del my_dict["age"]  # حذف جفت کلید-مقدار با کلید "age"
print(my_dict)  # خروجی: {'name': 'Alice', 'city': 'New York'}

چک کردن وجود یک کلید یا مقدار در دیکشنری:

print("name" in my_dict)  # چک کردن وجود کلید "name" (خروجی: True)
print("age" in my_dict)  # چک کردن وجود کلید "age" (خروجی: False)

۵. ترکیب داده‌های پیچیده

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

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

students = [
    {"name": "Alice", "age": 25},
    {"name": "Bob", "age": 30}
]
print(students[0]["name"])  # خروجی: Alice

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

my_dict = {"set1": {1, 2, 3}, "set2": {4, 5, 6}}
print(my_dict["set1"])  # خروجی: {1, 2, 3}

۶. عملیات روی مجموعه‌ها و داده‌های پیچیده

  • اتحاد (Union): ترکیب دو مجموعه.
  • تقاطع (Intersection): عناصر مشترک بین دو مجموعه.
  • تفاضل (Difference): عناصری که در یک مجموعه ولی در مجموعه دیگر نیستند.

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

set1 = {1, 2, 3}
set2 = {3, 4, 5}

# اتحاد
union_set = set1 | set2
print(union_set)  # خروجی: {1, 2, 3, 4, 5}

# تقاطع
intersection_set = set1 & set2
print(intersection_set)  # خروجی: {3}

# تفاضل
difference_set = set1 - set2
print(difference_set)  # خروجی: {1, 2}

۷. جمع‌بندی

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

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

با استفاده از این داده‌های پیچیده می‌توان برنامه‌های بهینه و انعطاف‌پذیر نوشت.