آموزش جامع مجموعهها در پایتون
مقدمه
مجموعهها (Sets) در پایتون ساختارهای دادهای قدرتمندی هستند که برای ذخیرهسازی مجموعهای از عناصر منحصربهفرد و غیرقابل تغییر استفاده میشوند.
برخلاف لیستها که میتوانند عناصر تکراری داشته باشند و ترتیب عناصر در آنها مهم است، در مجموعهها هر عنصر فقط یک بار وجود دارد و ترتیب عناصر بیاهمیت است.
این ویژگیها، مجموعهها را برای انجام عملیات مختلف مانند یافتن عناصری که در دو مجموعه مشترک هستند یا نیستند، ترکیب یا تفریق مجموعهها، بررسی وجود یک عنصر خاص در مجموعه و مرتبسازی عناصر مجموعه، به روشی کارآمد و مؤثر، مناسب میکند.
ایجاد مجموعه
ایجاد مجموعه در پایتون با استفاده از علامت آکولاد {}
و جداسازی عناصر با کاما ,
انجام میشود. به عنوان مثال، برای ایجاد مجموعهای شامل اعداد ۱، ۲، ۳ و ۴ میتوان از کد زیر استفاده کرد:
my_set = {۱, ۲, ۳, ۴}
همچنین میتوان از نوع داده set
برای تبدیل یک لیست یا تاپل به مجموعه استفاده کرد. این کار باعث حذف عناصر تکراری از لیست یا تاپل میشود:
my_list = [۱, ۲, ۳, ۲, ۴, ۳]
my_set = set(my_list)
print(my_set) # {۱, ۲, ۳, ۴}
دسترسی به عناصر مجموعه
دسترسی مستقیم به عناصر خاص در یک مجموعه با استفاده از ایندکس امکانپذیر نیست، زیرا ترتیب عناصر در مجموعه تعریف نشده است.
با این حال، میتوانید از روشهای مختلفی برای پیمایش عناصر مجموعه و دسترسی به آنها استفاده کنید:
- حلقه for:
for element in my_set:
print(element)
- متد
pop()
: این متد یک عنصر تصادفی را از مجموعه حذف کرده و آن را برمیگرداند:
element = my_set.pop()
print(element) # ۱ or 2 or 3 or 4 (randomly removed)
- متد
clear()
: این متد تمام عناصر مجموعه را حذف میکند:
my_set.clear()
print(my_set) # set()
عملیات مجموعه
مجموعهها از تعدادی عملیات داخلی برای انجام وظایف مختلف مانند یافتن عناصری که در دو مجموعه مشترک هستند یا نیستند، ترکیب یا تفریق مجموعهها، بررسی وجود یک عنصر خاص در مجموعه و مرتبسازی عناصر مجموعه پشتیبانی میکنند.
برخی از مهمترین عملیات مجموعه در پایتون عبارتند از:
- اتحاد (Union): این عمل عناصر موجود در هر دو مجموعه را در یک مجموعه جدید ترکیب میکند. از علامت
|
یا تابعunion()
برای این کار استفاده میشود:
set1 = {۱, ۲, ۳}
set2 = {۳, ۴, ۵}
union_set = set1 | set2
print(union_set) # {۱, ۲, ۳, ۴, ۵}
- اشتراک (Intersection): این عمل عناصری را که در هر دو مجموعه مشترک هستند، در یک مجموعه جدید جمعآوری میکند. از علامت
&
یا تابعintersection()
برای این کار استفاده میشود:
set1 = {۱, ۲, ۳}
set2 = {۳, ۴, ۵}
intersection_set = set1 & set2
print(intersection_set) # {۳}
- تفاضل (Difference): این عمل عناصری را که در مجموعه اول وجود دارند و در مجموعه دوم نیستند، در یک مجموعه جدید جمعآوری میکند. از علامت
-
یا تابعdifference()
برای این کار استفاده میشود:
set1 = {۱, ۲, ۳}
set2 = {۳, ۴, ۵}
difference_set = set1 - set2
print(difference_set) # {۱, ۲}
- بررسی وجود عنصر (In): این عمل بررسی میکند که آیا عنصر خاصی در مجموعه وجود دارد یا خیر. از اپراتور
in
برای این کار استفاده میشود:
my_set = {۱, ۲, ۳, ۴, ۵}
print(۱ in my_set) # True
print(۶ in my_set) # False
مرتبیسازی عناصر مجموعه
در حالی که ترتیب عناصر در یک مجموعه ذاتاً نامشخص است، میتوان از روشهای مختلفی برای مرتبسازی عناصر یک مجموعه بر اساس معیارهای خاص استفاده کرد.
یکی از روشهای رایج استفاده از کتابخانه collections
و تابع sorted()
است. این تابع عناصر مجموعه را به ترتیب صعودی مرتبسازی میکند و یک لیست مرتبشده جدید برمیگرداند.
برای مثال:
my_set = {۵, ۲, ۴, ۱, ۳}
sorted_list = sorted(my_set)
print(sorted_list) # [۱, ۲, ۳, ۴, ۵]
همچنین میتوان از روشهای دیگر مانند تبدیل مجموعه به لیست و سپس مرتبسازی لیست با استفاده از توابع مرتبسازی داخلی پایتون استفاده کرد.
مقایسه مجموعهها
مقایسه دو مجموعه برای بررسی برابری یا عدم برابری آنها امکانپذیر است.
از اپراتورهای مقایسهای ==
و !=
برای بررسی برابری و عدم برابری دو مجموعه به ترتیب استفاده میشود:
set1 = {۱, ۲, ۳}
set2 = {۱, ۲, ۳}
set3 = {۴, ۵, ۶}
print(set1 == set2) # True
print(set1 != set3) # True
همچنین میتوان از روشهای دیگر مانند تبدیل مجموعهها به لیستهای مرتبشده و سپس مقایسه لیستها با استفاده از توابع مقایسهای داخلی پایتون استفاده کرد.
کاربردهای مجموعهها
مجموعهها کاربردهای مختلفی در برنامهنویسی دارند، از جمله:
- حذف تکراریها: برای حذف عناصر تکراری از لیستها یا تاپلها
- یافتن عناصری که در دو مجموعه مشترک هستند یا نیستند: برای تطبیق دادهها یا یافتن تفاوت بین مجموعهها
- انجام عملیات مجموعه: مانند اتحاد، اشتراک و تفاضل
- چک کردن وجود عنصر: برای بررسی اینکه آیا یک عنصر خاص در یک مجموعه وجود دارد یا خیر
- ایجاد ساختارهای داده کارآمد: مانند دیکشنریها و گرافها
جمعبندی
مجموعهها در پایتون ساختارهای دادهای قدرتمند و کارآمد هستند که برای انجام انواع مختلف عملیات مربوط به مجموعهها به روشی مؤثر و آسان، مناسب هستند.
فهم مفاهیم و روشهای کار با مجموعهها برای هر برنامهنویس پایتون ضروری است.