مجموعهها (Sets) و عملیات روی آنها در پایتون – مبانی پایتون
در پایتون، مجموعهها (Sets) یکی از انواع دادههای پرکاربرد هستند که برای ذخیره مجموعهای از عناصر منحصربهفرد استفاده میشوند. این بدان معناست که هیچ عنصری در یک مجموعه نمیتواند تکراری باشد. مجموعهها در پایتون ترتیب ندارند، یعنی ترتیب قرارگیری عناصر در مجموعه اهمیتی ندارد. در این مقاله، به بررسی جامع مجموعهها، نحوه ایجاد آنها، عملیات مختلفی که میتوان روی آنها انجام داد و کاربردهای آنها در پایتون میپردازیم.
تعریف مجموعه (Set)
مجموعه در پایتون یک نوع دادهی غیرترتیبی و غیرقابلتغییر است که شامل مجموعهای از عناصر منحصربهفرد میباشد. ویژگی اصلی مجموعهها، حذف خودکار عناصر تکراری است. این ویژگی آنها را برای مواردی که نیاز به نگهداری عناصر منحصربهفرد دارید، بسیار مفید میکند.
ایجاد مجموعه (Set)
چندین روش برای ایجاد مجموعهها در پایتون وجود دارد:
- استفاده از آکولاد {}: سادهترین روش برای ایجاد یک مجموعه، استفاده از آکولاد و قرار دادن عناصر درون آن است.
- استفاده از تابع set(): میتوان از تابع
set()برای ایجاد یک مجموعه از یک لیست، تاپل یا رشته استفاده کرد. - ایجاد مجموعه خالی: برای ایجاد یک مجموعه خالی، نمیتوان از آکولاد خالی
{}استفاده کرد، زیرا آکولاد خالی یک دیکشنری (dictionary) ایجاد میکند. برای ایجاد یک مجموعه خالی، باید از تابعset()بدون هیچ آرگومانی استفاده کرد.
مثالها:
# ایجاد مجموعه با استفاده از آکولاد
my_set = {1, 2, 3, 4, 5}
print(my_set) # خروجی: {1, 2, 3, 4, 5}
# ایجاد مجموعه از یک لیست
my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)
print(my_set) # خروجی: {1, 2, 3, 4, 5}
# ایجاد مجموعه از یک رشته
my_string = "hello"
my_set = set(my_string)
print(my_set) # خروجی: {'h', 'e', 'l', 'o'}
# ایجاد مجموعه خالی
empty_set = set()
print(empty_set) # خروجی: set()
عملیات روی مجموعهها (Set Operations)
پایتون مجموعهای از عملیات را برای کار با مجموعهها فراهم میکند. این عملیات شامل عملیات ریاضی مجموعهای (مانند اجتماع، اشتراک، تفاضل) و همچنین عملیات تغییردهنده (مانند افزودن، حذف عناصر) میشوند.
عملیات ریاضی مجموعهای
- اجتماع (Union): اجتماع دو مجموعه، مجموعهای است که شامل تمام عناصر هر دو مجموعه میشود. از عملگر
|یا تابعunion()برای انجام این عملیات استفاده میشود. - اشتراک (Intersection): اشتراک دو مجموعه، مجموعهای است که شامل عناصری میشود که در هر دو مجموعه وجود دارند. از عملگر
&یا تابعintersection()برای انجام این عملیات استفاده میشود. - تفاضل (Difference): تفاضل دو مجموعه، مجموعهای است که شامل عناصری میشود که در مجموعه اول وجود دارند اما در مجموعه دوم وجود ندارند. از عملگر
-یا تابعdifference()برای انجام این عملیات استفاده میشود. - تفاضل متقارن (Symmetric Difference): تفاضل متقارن دو مجموعه، مجموعهای است که شامل عناصری میشود که در یکی از دو مجموعه وجود دارند اما در هر دو مجموعه وجود ندارند. از عملگر
^یا تابعsymmetric_difference()برای انجام این عملیات استفاده میشود.
مثالها:
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
# اجتماع
union_set = set1 | set2
print(union_set) # خروجی: {1, 2, 3, 4, 5, 6, 7}
# اشتراک
intersection_set = set1 & set2
print(intersection_set) # خروجی: {3, 4, 5}
# تفاضل
difference_set = set1 - set2
print(difference_set) # خروجی: {1, 2}
# تفاضل متقارن
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set) # خروجی: {1, 2, 6, 7}
عملیات تغییردهنده
- add(): برای افزودن یک عنصر به مجموعه استفاده میشود.
- remove(): برای حذف یک عنصر از مجموعه استفاده میشود. اگر عنصر مورد نظر در مجموعه وجود نداشته باشد، یک خطا (KeyError) رخ میدهد.
- discard(): برای حذف یک عنصر از مجموعه استفاده میشود. اگر عنصر مورد نظر در مجموعه وجود نداشته باشد، هیچ خطایی رخ نمیدهد.
- pop(): برای حذف و برگرداندن یک عنصر تصادفی از مجموعه استفاده میشود.
- clear(): برای حذف تمام عناصر از مجموعه استفاده میشود.
مثالها:
my_set = {1, 2, 3}
# افزودن عنصر
my_set.add(4)
print(my_set) # خروجی: {1, 2, 3, 4}
# حذف عنصر
my_set.remove(2)
print(my_set) # خروجی: {1, 3, 4}
# حذف عنصر با discard
my_set.discard(5) # هیچ خطایی رخ نمیدهد
print(my_set) # خروجی: {1, 3, 4}
# حذف عنصر تصادفی
popped_element = my_set.pop()
print(popped_element) # خروجی: یک عنصر تصادفی از مجموعه
print(my_set) # خروجی: مجموعه بدون عنصر حذف شده
# حذف تمام عناصر
my_set.clear()
print(my_set) # خروجی: set()
سایر عملیات مفید
- len(): برای بدست آوردن تعداد عناصر یک مجموعه استفاده میشود.
- in: برای بررسی وجود یک عنصر در مجموعه استفاده میشود.
- isdisjoint(): بررسی میکند که آیا دو مجموعه هیچ عنصر مشترکی ندارند یا خیر.
- issubset(): بررسی میکند که آیا یک مجموعه زیرمجموعه دیگری است یا خیر.
- issuperset(): بررسی میکند که آیا یک مجموعه ابرمجموعه دیگری است یا خیر.
مثالها:
my_set = {1, 2, 3}
# بدست آوردن تعداد عناصر
print(len(my_set)) # خروجی: 3
# بررسی وجود عنصر
print(1 in my_set) # خروجی: True
print(4 in my_set) # خروجی: False
set1 = {1, 2}
set2 = {3, 4}
# بررسی عدم اشتراک
print(set1.isdisjoint(set2)) # خروجی: True
set3 = {1, 2, 3}
# بررسی زیرمجموعه
print(set1.issubset(set3)) # خروجی: True
# بررسی ابرمجموعه
print(set3.issuperset(set1)) # خروجی: True
کاربردهای مجموعهها
مجموعهها در پایتون کاربردهای فراوانی دارند، از جمله:
- حذف عناصر تکراری: همانطور که اشاره شد، مجموعهها به طور خودکار عناصر تکراری را حذف میکنند.
- بررسی عضویت: بررسی اینکه آیا یک عنصر در یک مجموعه وجود دارد، بسیار سریعتر از بررسی در یک لیست است.
- عملیات ریاضی مجموعهای: مجموعهها برای انجام عملیات ریاضی مجموعهای مانند اجتماع، اشتراک و تفاضل بسیار مناسب هستند.
- بهینهسازی الگوریتمها: در برخی الگوریتمها، استفاده از مجموعهها میتواند به بهبود کارایی آنها کمک کند.
نتیجهگیری
مجموعهها یکی از انواع دادههای قدرتمند در پایتون هستند که برای ذخیره مجموعهای از عناصر منحصربهفرد و انجام عملیات مختلف روی آنها استفاده میشوند. با درک مفاهیم و عملیات مربوط به مجموعهها، میتوانید کد پایتون خود را کارآمدتر و خواناتر بنویسید. این مقاله به شما یک دید کلی از مجموعهها و نحوه استفاده از آنها در پایتون ارائه داد. تمرین و استفاده از این مفاهیم در پروژههای مختلف، به شما کمک میکند تا تسلط بیشتری بر روی مجموعهها پیدا کنید.

بدون دیدگاه