python, آموزش قدم به قدم پایتون, پایتون

set در پایتون (مجموعه‌ها)

set در پایتون (مجموعه‌ها)


در زبان برنامه‌نویسی پایتون، مجموعه‌ها (Sets) یکی از ساختارهای داده‌ای (data structure) مهم و کاربردی هستند که برای مدیریت مجموعه‌ای از عناصر یکتا و بدون ترتیب استفاده می‌شوند. setها در پایتون از ساختار داده‌ای متنوعی برخوردارند و به شما این امکان را می‌دهند که عملیات‌های مجموعه‌ای مانند اشتراک، اجتماع، تفاضل و تقاطع را روی داده‌های خود انجام دهید. در این مقاله به مفهوم set در پایتون، نحوه ایجاد، مدیریت و کاربردهای آن‌ها خواهیم پرداخت. پیشنهاد می‌کنیم از دیگر آموزش‌های ما نیز دیدن فرمایید:

مفهوم set در پایتون

set یک ساختار داده‌ای در پایتون است که تعدادی عنصر متمایز را در خود ذخیره می‌کند. یکی از ویژگی‌های مهم مجموعه‌ها این است که هر عنصر در یک مجموعه تنها یکبار وجود دارد و ترتیب عناصر در مجموعه اهمیت ندارد.

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

my_set = set()

این دستور یک مجموعه تازه ایجاد می‌کند. همچنین می‌توانیم عناصر اولیه مجموعه را در همان لحظه تعریف کنیم:

my_set = {1, 2, 3}

در این مثال، یک مجموعه با عناصر 1، 2 و 3 ایجاد شده است.

عملیات اصلی با setها

مجموعه‌ها در پایتون انواعی از عملیات‌های مفید را برای مدیریت داده‌ها ارائه می‌دهند. به مهم‌ترین عملیات‌های مجموعه‌ها در پایتون می‌پردازیم:

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

شما می‌توانید با استفاده از متد add() عناصر جدید به مجموعه اضافه کنید. به عنوان مثال:

my_set = {1, 2, 3}
my_set.add(4)

در این مثال، عدد 4 به مجموعه اضافه شده است.

حذف عناصر از مجموعه

برای حذف عناصر از مجموعه، می‌توانید از متد remove() یا discard() استفاده کنید. این دو متد تفاوت کمی دارند؛ متد remove() اگر عنصر مورد نظر وجود نداشته باشد، یک خطای KeyError را پرتاب (throw) می‌کند، در حالی که discard() بدون ایجاد خطا عمل حذف را انجام می‌دهد. به عنوان مثال:

my_set = {1, 2, 3}
my_set.remove(2)
my_set.discard(4)  # اگر عنصر وجود نداشته باشد، هیچ خطایی ایجاد نمی‌شود

تعداد عناصر در مجموعه

شما می‌توانید با استفاده از تابع len() تعداد عناصر موجود در مجموعه را بدست آورید. به عنوان مثال:

my_set = {1, 2, 3, 4, 5}
count = len(my_set)

چک کردن وجود یک عنصر در مجموعه

برای بررسی اینکه آیا یک عنصر خاصی در set وجود دارد یا نه، می‌توانید از عملگر in استفاده کنید. این عملگر True یا False برگردانده و نشان می‌دهد که آیا عنصر مورد نظر در مجموعه وجود دارد یا نه. به عنوان مثال:

my_set = {1, 2, 3, 4, 5}
result = 3 in my_set  # True
result = 6 in my_set  # False

اشتراک مجموعه‌ها

شما می‌توانید با استفاده از متد intersection() یا &، اشتراک دو مجموعه را بیابید. به عنوان مثال:

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
result = set1.intersection(set2)  # نتیجه: {3, 4, 5}
result = set1 & set2  # نتیجه: {3, 4, 5}

اجتماع مجموعه‌ها

برای پیدا کردن اجتماع دو مجموعه، می‌توانید از متد union() یا | استفاده کنید. به عنوان مثال:

set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1.union(set2)  # نتیجه: {1, 2, 3, 4, 5}
result = set1 | set2  # نتیجه: {1, 2, 3, 4, 5}

تفاضل مجموعه‌ها

برای یافتن تفاضل دو مجموعه، می‌توانید از متد difference() یا - استفاده کنید. به عنوان مثال:

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
result = set1.difference(set2)  # نتیجه: {1, 2}
result = set1 - set2  # نتیجه: {1, 2}

تقاطع مجموعه‌ها

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

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
result = set1.symmetric_difference(set2)  # نتیجه: {1, 2, 6, 7}

توابع دیگر مجموعه‌ها

پایتون دارای تعدادی تابع دیگری برای مدیریت مجموعه‌ها است. این توابع عبارتند از:

  • ()copy: برای ایجاد یک کپی از مجموعه.
  • ()clear: برای حذف تمامی عناصر موجود در مجموعه.
  • ()isdisjoint: برای بررسی اینکه دو مجموعه اشتراک دارند یا نه.
  • ()issubset: برای بررسی اینکه یک مجموعه زیرمجموعه‌ای از دیگری است یا نه.
  • ()issuperset: برای بررسی اینکه یک مجموعه مجموعه‌ای را شامل می‌شود یا نه.

مثال‌های عملی set در پایتون

حال که با مفاهیم اصلی مجموعه‌ها آشنا شدیم، به چند مثال عملی از کاربردهای مجموعه‌ها در پایتون می‌پردازیم:

حذف تکرارها از یک لیست

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

my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))

در این مثال، لیست my_list شامل عناصر تکراری است، اما با تبدیل آن به مجموعه set تکرارها حذف می‌شوند و سپس با استفاده از list() نوع آن به لیست برگردانده می‌شود.

پیدا کردن عناصر مشترک در لیست‌ها

اگر دو لیست داریم و می‌خواهیم عناصر مشترک در هر دو لیست را پیدا کنیم، می‌توانیم از اشتراک مجموعه‌ها استفاده کنیم:

list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
common_elements = list(set(list1) & set(list2))

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

اشتراک کاربران در شبکه‌های اجتماعی

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

user1_friends = {"Alice", "Bob", "Charlie", "David"}
user2_friends = {"Bob", "Eve", "Frank", "Charlie"}
common_friends = user1_friends.intersection(user2_friends)

در این مثال، با استفاده از intersection() می‌توانیم دوستان مشترک بین دو کاربر را پیدا کنیم.

محدودیت‌ها و نکات مهم

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

  1. عناصر مجموعه باید یکتا باشند: هر عنصر در یک مجموعه تنها یک بار وجود دارد. اگر یک عنصر را دوباره به مجموعه اضافه کنید، تکرار نخواهد شد.
  2. عناصر مجموعه ترتیب خاصی ندارند: عناصر در مجموعه‌ها ترتیبی ندارند و برخلاف لیست‌ها و تاپل‌ها، به ترتیب اضافه نمی‌شوند.
  3. مجموعه‌ها با {} تعریف می‌شوند: برای ایجاد یک مجموعه، از {} استفاده کنید. توجه داشته باشید که برای ایجاد مجموعه خالی از set() استفاده کنید، زیرا {} خالی یک دیکشنری (dictionary) ایجاد می‌کند.
  4. عملیات‌های مجموعه‌ای می‌توانند کارآمد باشند: Setها برای انجام عملیات‌های مجموعه‌ای مانند اشتراک، اجتماع و تفاضل بسیار بهینه و کارآمد هستند. بنابراین، اگر نیاز به این عملیات دارید، مجموعه‌ها گزینه مناسبی هستند

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *