در زبان برنامهنویسی پایتون، یک مجموعه (Set) مجموعهای نامرتب از انواع داده است که قابل حلقه زنی یا قابل تکرار (iterable) و قابل تغییر (mutable) بوده و عناصر تکراری ندارد. ترتیب عناصر در یک مجموعه تعریف نشده است، اگرچه ممکن است از انواع مختلفی از داده ها تشکیل شده باشد.
مزیت اصلی استفاده از یک مجموعه نسبت به یک لیست در پایتون، وجود یک متد بسیار بهینهسازی شده برای بررسی وجود یک عنصر خاص در مجموعه مورد نظر است.
نوع داده مجموعه در پایتون
بیایید نگاهی عمیق و دقیق به نوع مجموعه در پایتون بیندازیم. پایتون زبان برنامه نویسی مهمی است که در دنیای هوش مصنوعی کاربردهای گستردهای دارد. مجموعهها یکی از مهمترین انواع داده در پایتون به حساب میآیند که به ما اجازه میدهند تا نسبت به ذخیره سازی یک گروه از مقادیر منحصر به فرد اقدام نماییم. در یک مجموعه، ترتیب عناصر اصلا مهم نیستند. همچون مجموعه در دنیای ریاضیات، مجموعههای پایتون هم اجزای تکراری ندارند و بیشتر برای عملیاتهای ریاضی به کار میروند. امکان انجام عملیاتهای خاصی همچون اجتماع، اشتراک و تفاضل با استفاده از مجموعهها وجود خواهد داشت!
در نظر داشته باشید که میان ساختمان داده مجموعه، لیست و آرایه تفاوتهای زیادی وجود دارد. این سه ساختار به هیچ عنوان برابر نبوده و همین مسئله هم منجر شده تا کار با آنها برای برخی از توسعه دهندگان تازه وارد به مسئلهای نسبتا پیچیده تبدیل شود. در لیست و آرایه ما با استفاده از تکنیکهایی همچون ایندکس گذاری در حال کار با مقادیر هستیم. در حالی است که مجموعه از جدول هش استفاده مینماید. در ضمن، ساختمان داده مجموعهها در پایتون به ما اجازه میدهد تا مقادیر را خیلی سریعتر و بهینهتر کنترل کنیم. حین انجام عملیات ریاضی در دنیای هوش مصنوعی، این ابزار به ما کمک زیادی خواهد کرد. در نتیجه، یادگیری نحوه کار با آن اهمیت زیادی خواهد داشت.
ویژگیهای کلیدی مجموعهها (sets) در پایتون
به نظر شما مجموعه در پایتون چه ویژگیهایی دارد؟ اصلا کاربران چرا به استفاده از مجموعهها علاقه نشان میدهند؟ در لیست زیر، میتوانید چند مورد از مهمترین ویژگیهای مجموعه در پایتون را مشاهده کنید.
- عدم ترتیب: مجموعهها ترتیب خاصی ندارند و نمیتوانند به صورت اندیسی به دادهها دسترسی پیدا کنند.
- عناصر منحصر به فرد: مجموعهها هیچ عنصر تکراری را نگه نمیدارند. اگر داده تکراری وارد شود، تنها یک بار ذخیره خواهد شد.
- قابلیت تغییر: مجموعهها میتوانند تغییر کنند. یعنی میتوان عناصر جدید به آنها اضافه کرد یا از آنها حذف کرد.
- دسترسی سریع: مجموعهها از ساختار دادههای هش برای ذخیرهسازی استفاده میکنند، که موجب سرعت بالای عملیات جستجو، افزودن و حذف میشود.
- مجموعه نمیتوانند شامل دادههای غیرقابل تغییر باشند: مجموعهها نمیتوانند شامل انواع دادهای قابل تغییر مانند لیستها یا دیکشنریها باشند.
- پشتیبانی از عملیاتهای ریاضی: مجموعهها از عملیاتهایی مانند اجتماع، اشتراک، تفاضل و تفاضل متقابل پشتیبانی میکنند.
به خاطر داشته باشید که مجموعه در پایتون ویژگیهای مثبت زیادی را در خود جای داده و موارد معرفی شده تنها چند مورد از مهمترینها هستند. زمانی که شما عملیات مجموعههای مختلف را درک کنید، میتوانید به راحتی نسبت به استفاده از این ابزار اقدام نمایید. البته، درک نحوه عملکرد این ابزار برای خیلی از توسعهدهندگان تازه وارد کار راحتی نیست! همین مسئله هم باعث شده تا خیلی از افراد نتوانند به درستی نسبت به استفاده از مجموعه اقدام نمایند.
ساخت و ایجاد یک مجموعه در پایتون
مجموعه ها در پایتون میتوانند با استفاده از تابع داخلی ()set با یک شیء قابل حلقه زنی (iterable) و یا با یک دنباله از اشیاء در حالی که در داخل آکولادهای باز و بسته ({ }) قرار دارند و با ‘ویرگول’ از هم جدا شده اند، ساخته شوند.
برای ساخت مجموعه در پایتون ما نیازی به استفاده از کتابخانههای جانبی نداریم! مجموعهها در پایتون از پیش تعریف شده هستند و توسعه دهندگان میتوانند با خیال راحت نسبت به استفاده از آنها اقدام نمایند. در واقع set در پایتون (Python) در خیلی از کتابخانهها و فریمورکهای حرفهای به کار رفته است.
توجه: یک مجموعه نمیتواند عناصر قابل تغییری (mutable) مانند یک لیست یا دیکشنری با پایتون داشته باشد، زیرا مجموعه قابل تغییر (mutable) است.
# Python program to demonstrate # Creation of Set in Python # Creating a Set set1 = set() print("Initial blank Set: ") print(set1) # Creating a Set with # the use of a String set1 = set("datayadforyou") print("\nSet with the use of String: ") print(set1) # Creating a Set with # the use of Constructor # (Using object to Store String) String = 'datayadforyou' set1 = set(String) print("\nSet with the use of an Object: " ) print(set1) # Creating a Set with # the use of a List set1 = set(["datayad", "For", "you"]) print("\nSet with the use of List: ") print(set1) # Creating a Set with # the use of a tuple t=("datayad","for","you") print("\nSet with the use of Tuple: ") print(set(t)) # Creating a Set with # the use of a dictionary d={"datayad":1,"for":2,"you":3} print("\nSet with the use of Dictionary: ") print(set(d))
خروجی:
Initial blank Set: set() Set with the use of String: {'f', 'r', 'a', 'o', 'y', 'd', 't', 'u'} Set with the use of an Object: {'f', 'r', 'a', 'o', 'y', 'd', 't', 'u'} Set with the use of List: {'For', 'datayad'} Set with the use of Tuple: {'for', 'datayad'} Set with the use of Dictionary: {'for', 'datayad'}
پیچیدگی زمانی: O(n)، که n طول رشته ورودی، لیست، تاپل یا دیکشنری است.
فضای کمکی: O(n)، که n طول رشته ورودی، لیست، تاپل یا دیکشنری است، زیرا اندازه مجموعه ایجاد شده وابسته به اندازه ورودی است.
یک مجموعه فقط شامل عناصر منحصر به فرد است، اما در زمان ایجاد مجموعه، ممکن است مقادیر تکراری چندین بار نیز ارسال شوند.
ترتیب عناصر در یک مجموعه تعریف نشده و تغییرناپذیر است. نوع عناصر در یک مجموعه نیازی به یکسان بودن ندارد و مقادیر مختلف از انواع داده مختلف نیز میتوانند به مجموعه ارسال شوند.
# Creating a Set with # a List of Numbers # (Having duplicate values) set1 = set([1, 2, 4, 4, 3, 3, 3, 6, 5]) print("\nSet with the use of Numbers: ") print(set1) # Creating a Set with # a mixed type of values # (Having numbers and strings) set1 = set([1, 2, 'datayad', 4, 'For', 6, 'datayad']) print("\nSet with the use of Mixed Values") print(set1)
خروجی:
Set with the use of Numbers: {1, 2, 3, 4, 5, 6} Set with the use of Mixed Values {1, 2, 4, 6, 'For', 'datayad'}
ایجاد SET در پایتون با روشی دیگر
برای ایجاد مجموعه در پایتون بیش از یک راه وجود دارد! در روشهای معرفی شده در قسمتهای قبل، ما نسبت به استفاده از تابع Set اقدام نمودیم. این تابع هرگونه متغیری را به مجموعه تبدیل میکند. این در حالی است که در کد زیر ما در حال استفاده از کروشه برای تعریف مجموعه هستیم. در این تکنیک نیازی به استفاده از تابع نبوده و ما در حال ایجاد یک مجموعه به صورت مستقیم و سرراست هستیم. برای ساخت یک مجموعه کوچک، به کار گیری روش زیر میتواند نتایج بهتری را به همراه داشته باشد.
روش تغییر مجموعه در پایتون
نوع داده مجموعه در پایتون، قابل تغییر است. به عبارت دیگر شما میتوانید عناصر جدیدی به آن اضافه کنید یا نسبت به حذف عناصر قدیمی اقدام نمایید. خوشبختانه چندین تکنیک مختلف را میتوان برای دنبال کردن این پروسه به کار گرفت.
مثلا برای اضافه کردن یک عنصر به مجموعه، از متد add() استفاده میکنیم. این متد یک عنصر به مجموعه اضافه میکند. اگر عنصر مورد نظر قبلاً در مجموعه وجود داشته باشد، هیچ تغییری ایجاد نمیشود. برای حذف آیتم از مجموعه هم میتوانیم به سراغ تابع discard برویم. این تابع به ما اجازه میدهد تا در بهترین حالت ممکن نسبت به حذف عناصر موجود در مجموعه اقدام کنیم.
ایجاد یک مجموعه با روشی دیگر
# Another Method to create sets in Python3 # Set containing numbers my_set = {1, 2, 3} print(my_set)
خروجی:
{1, 2, 3}
دسترسی به یک مجموعه در پایتون
نمی توانیم با ارجاع به یک شاخص (اندیس – index) به عناصر مجموعه دسترسی پیدا کنیم، زیرا مجموعهها نامرتب هستند و عناصر هیچ شاخصی ندارند. اما میتوانیم با استفاده از حلقه for روی عناصر مجموعه دستوراتی را اجرا کنیم، و یا می توانیم با استفاده از کلمه کلیدی in بپرسیم که آیا یک مقدار مشخص در مجموعه وجود دارد یا خیر.
# Python program to demonstrate # Accessing of elements in a set # Creating a set set1 = set(["datayad", "For", "you."]) print("\nInitial set") print(set1) # Accessing element using # for loop print("\nElements of set: ") for i in set1: print(i, end=" ") # Checking the element # using in keyword print("\n") print("Geeks" in set1)
خروجی:
Initial set {'you.', 'For', 'datayad'} Elements of set: you. For datayad False
عملیات مجموعه در پایتون
حال که با مقدمات مجموعه در پایتون آشنا شدیم، بیایید انواع عملیات روی مجموعه را به صورت دقیق مورد بررسی قرار دهیم. همچون علم ریاضیات، امکان اعمال تغییرات مختلفی روی مجموعهها در دنیای پایتون وجود دارند. اتحاد، اشتراک و تفاضل از جمله مهمترین عملیاتهای ی هستند که در این زمینه مورد بررسی قرار میگیرند. به خاطر داشته باشید که روابط میان مجموعههای مختلف اهمیت زیادی دارند. مخصوصا زمانی که شما در حال کار با پروژههایی که شامل جبر و محاسبات نظری هستند، شما باید بتوانید به درستی نسبت به استفاده از انواع مجموعه اقدام نمایید. عدم توجه به این مسئله نه تنها به ساختار پروژه آسیب وارد میکند بلکه میتواند چالشهای پیچیده زیادی را از نظر محاسبات سر راه شما قرار دهد. در ادامه ما چند مورد از عملیاتهای مخصوص مجموعه را با مثال مورد بررسی قرار میدهیم.
اتحاد مجموعهها در پایتون
اتحاد یا Union یکی از مهمترین عملیاتهای انجام شده روی مجموعه در پایتون به حساب میآید که ویژگیهای مثبت زیادی دارد. با استفاده از اتحاد شما میتوانید همه اعضای موجود در دو مجموعه را با یکدیگر ترکیب نمایید. با این کار، شما مجموعه جامعی به دست میآورید که دو مجموعه اولیه را زیرشاخه خود قرار میگیرد. به خاطر داشته باشید که عملگر “|” در این زمینه مورد استفاده قرار میگیرد. توسعه دهندگان با استفاده از متد Union() هم میتوانند به این عملیات برسند.
طبق گفته سایت SimpleLearn:
«مجموعه نوعی ساختمان داده است که به ما اجازه میدهد تا چندین مقدار را در یک متغیر ذخیره کنیم!»
در تصویر زیر میتوانید عملیات اتحاد روی مجموعه در پایتون را مشاهده کنید. در این مثال، ما دو مجموعه تعریف میکنیم و سپس با استفاده از دو تکنیک اتحاد را پیاده سازی مینماییم. در نظر داشته باشید که میان این دو تکنیک در دنیای پایتون، تفاوت خاصی وجود ندارد!
اشتراک مجموعهها در پایتون
به نظر شما اشتراک دو مجموعه در پایتون چه خروجی را به همراه دارد؟ اصلا ما از نظر ریاضیاتی اشتراک را چگونه تعریف میکنیم؟ همانطور که از نام این عملیات پیدا است، با استفاده از اشتراک مجموعهها در پایتون ما میتوانیم آیتمهای مشترک میان دو مجموعه را بیابیم. قطعا با استفاده از این کار ما به دیتاستی میرسیم که اعضای غیر مشترک را به صورت کامل حذف نموده است.
شاید برای شما هم جالب باشد بدانید که با توجه به خواص کلیدی مجموعه، با استفاده از این کار ما نه تنها اعضای تکراری را به صورت کامل حذف میکنیم بلکه در حال حذف اعضایی هستیم که در دو یا چند مجموعه مشترک نیستند! در نتیجه، به کار گیری این تکنیک میتواند مزایای زیادی را به همراه داشته باشد.
اشتراک یا Intersection را میتوان با استفاده از چند روش مختلف به اتمام رسد. متد intersection() یا عملگر “&” به ما اجازه میدهند تا این عملیات فوق العاده مهم را پیاده سازی کنیم. به تصویر زیر دقت داشته باشید. در این تصویر، ما در حال ایجاد دو مجموعه هستیم که مقادیر 3 و 4 در آنها مشترک هستند. در نتیجه، خروجی مورد انتظار ما شامل همین دو مورد میباشد.
تفاضل مجموعهها در پایتون
در نهایت آخرین مورد از مهمترین عملیات مجموعه در پایتون به تفاضل اشاره دارد. از نام این عملیات میتوان مهمترین کاربرد آن را حدس زد. به صورت کلی، تفاضل برای کسر کردن مقادیر موجود از دو مجموعه مورد استفاده قرار میگیرد. بیایید فرض کنیم که ما یک مجموعه با مقادیر 1، 2، 3 و 4 داریم. مجموعه دیگری با مقادیر 1 و 2 تعریف مینماییم. حال اگر بخواهیم مجموعه دوم را از مجموعه اول کسر کنیم، خروجی چه میشود؟ قطعا خروجی برابر با 3 و 4 خواهد بود. چرا که همه اعضای مشترک موجود میان مجموعه اول و دوم حذف میشوند.
به این عمل در زبان برنامه نویسی پایتون Difference گفته میشود. در این حالت ما به دنبال اعضایی هستیم که در مجموعه اول وجود دارند ولی در مجموعه دوم نمیتوان آنها را مشاهده نمود. برای استفاده از این تکنیک هم دو راهکار اصلی جلوی پای ما قرار دارد: استفاده از عملگر “-” یا استفاده از دستور difference!
به مثال موجود در تصویر زیر دقت کنید. در این تصویر ما دو مجموعه با مقادیر 1، 2، 3، 4 و 3، 4، 5، 6 تعریف کردهایم. حال اگر بخواهیم تفاضل این دو مجموعه را به دست آوریم خروجی چه مقداری خواهد بود؟ قطعا خروجی محاسبات ما شامل دو عدد 1 و 2 هستند. از همین رو، تفاضل ابزار کاربردی برای ما به حساب میآید که با استفاده از آن میتوانیم روی دادههای مختلف محدودیت اعمال کنیم.
متدهای مجموعه در پایتون
تابع |
توضیحات |
add() |
یک عنصر به مجموعه اضافه میکند |
remove() |
یک عنصر را از مجموعه حذف میکند. اگر عنصر در مجموعه وجود نداشته باشد، یک خطا از نوع KeyError ایجاد میشود |
clear() |
تمام عناصر مجموعه را حذف میکند |
copy() |
یک کپی از مجموعه را برمیگرداند |
pop() |
یک عنصر تصادفی از مجموعه را حذف و برمیگرداند. اگر مجموعه خالی باشد، یک خطا از نوع KeyError ایجاد میشود |
update() |
مجموعه را با اتحاد خود و دیگر مجموعهها بهروز میکند |
union() |
اتحاد مجموعهها را در یک مجموعه جدید برمیگرداند |
difference() |
اختلاف دو یا چند مجموعه را بهعنوان یک مجموعه جدید برمیگرداند |
difference_update() |
تمام عناصر مجموعه دیگر را از این مجموعه حذف میکند |
discard() |
یک عنصر را از مجموعه حذف میکند. (اگر عنصر در مجموعه نباشد، هیچ عملی انجام نمیدهد) |
intersection() |
اشتراک دو مجموعه را بهعنوان یک مجموعه جدید برمیگرداند |
intersection_update() |
مجموعه را با اشتراک خود و یک مجموعه دیگر بهروز میکند |
isdisjoint() |
اگر دو مجموعه اشتراک نداشته باشند، True برمیگرداند |
issubset() |
اگر یک مجموعه، زیرمجموعه دیگری باشد، True برمیگرداند |
issuperset() |
اگر یک مجموعه شامل مجموعه دیگر باشد، True برمیگرداند (برعکس ()issubset) |
symmetric_difference() |
تفاوت همگن دو مجموعه را بهعنوان یک مجموعه جدید برمیگرداند |
symmetric_difference_update() |
مجموعه را با تفاوت همگن خود و یک مجموعه دیگر بهروز میکند |
در ادامه هر کدام از این موارد را دقیقتر بررسی میکنیم.
افزودن عناصر به یک مجموعه
استفاده از متد ()add
عناصر میتوانند با استفاده از تابع داخلی add به مجموعه اضافه شوند. تنها یک عنصر در هر زمان میتواند با استفاده از متد add به مجموعه اضافه شود، اما با استفاده از این متد و از حلقهها، میتوان چندین عنصر را به یکباره به مجموعه اضافه کرد.
توجه: لیستها به عنوان عناصر به یک مجموعه اضافه نمیشوند، زیرا لیستها قابل هش کردن نیستند در حالی که تاپلها به عنوان عناصر مجموعه قابل اضافه شدن هستند؛ چرا که تاپلها تغییرناپذیر هستند و بنابراین قابل هش کردن هستند.
# Python program to demonstrate # Addition of elements in a Set # Creating a Set set1 = set() print("Initial blank Set: ") print(set1) # Adding element and tuple to the Set set1.add(8) set1.add(9) set1.add((6, 7)) print("\nSet after Addition of Three elements: ") print(set1) # Adding elements to the Set # using Iterator for i in range(1, 6): set1.add(i) print("\nSet after Addition of elements from 1-5: ") print(set1)
خروجی:
Initial blank Set:
set()
Set after Addition of Three elements:
{8, 9, (6, 7)}
Set after Addition of elements from 1-5:
{1, 2, 3, (6, 7), 4, 5, 8, 9}
استفاده از متد ()update
برای اضافه کردن دو عنصر یا بیشتر، از متد update استفاده میشود. متد update لیستها، رشتهها، تاپلها، و همچنین مجموعههای دیگر را به عنوان ورودیهای خود قبول میکند. در همه این موارد، جلوگیری از وجود عناصر تکراری صورت میگیرد.
# Python program to demonstrate # Addition of elements in a Set # Addition of elements to the Set # using Update function set1 = set([4, 5, (6, 7)]) set1.update([10, 11]) print("\nSet after Addition of elements using Update: ") print(set1)
خروجی:
Set after Addition of elements using Update: {4, 5, (6, 7), 10, 11}
حذف عناصر از مجموعه
استفاده از متد ()remove یا ()discard:
میتوانید از تابع داخلی ()remove برای حذف عناصر از مجموعه استفاده کنید، اما اگر عنصر در مجموعه وجود نداشته باشد، یک خطا با نوع KeyError ایجاد میشود.
برای حذف عناصر از یک مجموعه بدون ایجاد KeyError، از ()discard استفاده کنید؛ اگر عنصر در مجموعه وجود نداشته باشد، مجموعه بدون تغییر باقی میماند.
# Python program to demonstrate # Deletion of elements in a Set # Creating a Set set1 = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) print("Initial Set: ") print(set1) # Removing elements from Set # using Remove() method set1.remove(5) set1.remove(6) print("\nSet after Removal of two elements: ") print(set1) # Removing elements from Set # using Discard() method set1.discard(8) set1.discard(9) print("\nSet after Discarding two elements: ") print(set1) # Removing elements from Set # using iterator method for i in range(1, 5): set1.remove(i) print("\nSet after Removing a range of elements: ") print(set1)
خروجی:
Initial Set: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} Set after Removal of two elements: {1, 2, 3, 4, 7, 8, 9, 10, 11, 12} Set after Discarding two elements: {1, 2, 3, 4, 7, 10, 11, 12} Set after Removing a range of elements: {7, 10, 11, 12}
استفاده از متد ()pop
تابع ()pop همچنین میتواند برای حذف و بازگرداندن یک عنصر از مجموعه استفاده شود، اما تنها آخرین عنصر مجموعه را حذف میکند.
توجه: اگر مجموعه نامرتب باشد، هیچ راهی برای تعیین اینکه کدام عنصر با استفاده از تابع ()pop حذف میشود وجود ندارد.
# Python program to demonstrate # Deletion of elements in a Set # Creating a Set set1 = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) print("Initial Set: ") print(set1) # Removing element from the # Set using the pop() method set1.pop() print("\nSet after popping an element: ") print(set1)
خروجی:
Initial Set: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} Set after popping an element: {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
استفاده از متد ()clear
برای حذف همه عناصر از مجموعه، از تابع ()clear استفاده میشود.
#Creating a set set1 = set([1,2,3,4,5]) print("\n Initial set: ") print(set1) # Removing all the elements from # Set using clear() method set1.clear() print("\nSet after clearing all the elements: ") print(set1)
خروجی:
Initial set: {1, 2, 3, 4, 5} Set after clearing all the elements: set()
مجموعههای یخزده (frozen sets)
در پایتون اشیاء غیرقابل تغییری هستند که تنها از متدها و عملگرهایی پشتیبانی میکنند که نتیجه آنها بدون تغییر مجموعه یخ زده یا مجموعههایی که بر روی آنها اعمال میشوند، تولید میشود.
در حالی که عناصر یک مجموعه میتوانند در هر زمان تغییر داده شوند، عناصر مجموعه یخزده پس از ایجاد، تغییر نمیکنند.
اگر هیچ پارامتری برای این تابع ارسال نشود، یک frozenset خالی برمیگرداند. فروزنست در پایتون کاربردهای گستردهای دارد و کارشناسان میتوانند آن را در موقعیتهای زیادی مورد استفاده قرار دهند. به خاطر داشته باشید که این مجموعهها ثابت بوده و معمولا در پروژههای ی به کار میروند که حفظ و نگهداری از اطلاعات اهمیت زیادی دارند. مثلا برای اجرای پروژههای تحت بلاکچین، استفاده از این ساختمان داده اهمیت زیادی خواهد داشت.
# Python program to demonstrate # working of a FrozenSet # Creating a Set String = ('d', 'a', 't', 'a', 'y', 'a', 'd', 'f', 'o', 'r') Fset1 = frozenset(String) print("The FrozenSet is: ") print(Fset1) # To print Empty Frozen Set # No parameter is passed print("\nEmpty FrozenSet: ") print(frozenset())
خروجی:
The FrozenSet is: frozenset({'o', 'a', 'f', 'y', 'r', 't', 'd'}) Empty FrozenSet: frozenset()
تبدیل نوع اشیاء به مجموعهها
# Typecasting Objects in Python3 into sets # Typecasting list into set my_list = [1, 2, 3, 3, 4, 5, 5, 6, 2] my_set = set(my_list) print("my_list as a set: ", my_set) # Typecasting string into set my_str = "datayadforyou" my_set1 = set(my_str) print("my_str as a set: ", my_set1) # Typecasting dictionary into set my_dict = {1: "One", 2: "Two", 3: "Three"} my_set2 = set(my_dict) print("my_dict as a set: ", my_set2)
خروجی:
my_list as a set: {1, 2, 3, 4, 5, 6} my_str as a set: {'f', 'o', 'a', 'r', 'y', 'd', 't', 'u'} my_dict as a set: {1, 2, 3}
مثال: اجرای تمام توابع
def create_set(): my_set = {1, 2, 3, 4, 5} print(my_set) def add_element(): my_set = {1, 2, 3, 4, 5} my_set.add(6) print(my_set) def remove_element(): my_set = {1, 2, 3, 4, 5} my_set.remove(3) print(my_set) def clear_set(): my_set = {1, 2, 3, 4, 5} my_set.clear() print(my_set) def set_union(): set1 = {1, 2, 3} set2 = {4, 5, 6} my_set = set1.union(set2) print(my_set) def set_intersection(): set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} my_set = set1.intersection(set2) print(my_set) def set_difference(): set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} my_set = set1.difference(set2) print(my_set) def set_symmetric_difference(): set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} my_set = set1.symmetric_difference(set2) print(my_set) def set_subset(): set1 = {1, 2, 3, 4, 5} set2 = {2, 3, 4} subset = set2.issubset(set1) print(subset) def set_superset(): set1 = {1, 2, 3, 4, 5} set2 = {2, 3, 4} superset = set1.issuperset(set2) print(superset) if __name__ == '__main__': create_set() add_element() remove_element() clear_set() set_union() set_intersection() set_difference() set_symmetric_difference() set_subset() set_superset()
خروجی:
{1, 2, 3, 4, 5} {1, 2, 3, 4, 5, 6} {1, 2, 4, 5} set() {1, 2, 3, 4, 5, 6} {4, 5} {1, 2, 3} {1, 2, 3, 6, 7, 8} True True
مزایای مجموعهها در پایتون (Set)
– عناصر منحصر به فرد: مجموعهها تنها میتوانند شامل عناصر منحصر به فرد باشند، بنابراین میتوانند برای حذف تکرارها از یک مجموعه داده مفید باشند.
– تست سریع عضویت: مجموعهها برای تست سریع عضویت بهینهسازی شدهاند، بنابراین میتوانند برای تعیین اینکه آیا یک مقدار در یک مجموعه است یا خیر، مفید باشند.
– عملیات ریاضیاتی مجموعه: مجموعهها عملیات ریاضیاتی مجموعه مانند اتحاد، اشتراک و تفاوت را پشتیبانی میکنند که میتواند برای کار با مجموعههای داده مفید باشد.
– قابل تغییر: مجموعهها قابل تغییر هستند، به این معنا که میتوانید بعد از ایجاد، عناصری را به مجموعه اضافه یا از آن حذف کنید.
معایب مجموعهها در پایتون (Set)
– نامرتب: مجموعهها نامرتب هستند، به این معنا که نمیتوانید به ترتیب دادهها در مجموعه اعتماد کنید. این ممکن است باعث شود که دسترسی یا پردازش دادهها به ترتیب خاصی دشوار شود.
– کاربردهای محدودتر: مجموعهها نسبت به لیستها کمکاربردتر هستند، زیرا از متدهایی مانند append یا pop پشتیبانی نمیکنند. این میتواند باعث شود که تغییر یا دستکاری دادههای ذخیره شده در یک مجموعه دشوارتر شود.
– مصرف حافظه: مجموعهها ممکن است حافظه بیشتری را نسبت به لیستها مصرف کنند، به ویژه برای مجموعههای داده کوچک. این به این دلیل است که هر عنصر در یک مجموعه به حافظه اضافی نیاز دارد تا یک مقدار هش را ذخیره کند.
– کمکاربردتر: مجموعهها در پایتون : مجموعهها در پایتون کمکاربردتر از لیستها و دیکشنریها هستند، به این معنا که ممکن است منابع یا کتابخانههای کمتری برای کار با آنها موجود باشد. این ممکن است باعث شود که پیدا کردن راهحلها برای مسائل یا گرفتن کمک در اشکالزدایی هنگام کار با آنها دشوارتر شود.
به طور کلی، مجموعهها در پایتون میتوانند یک ساختار داده مفید در پایتون باشند، به ویژه برای حذف تکرارها یا برای تست سریع عضویت. با این حال عدم مرتب بودن و قابلیتهای محدود آنها، میتواند باعث شود که آنها نسبت به لیستها یا دیکشنریها کمتر تطبیق پذیر باشند.
بنابراین هنگامی که قصد دارید ساختار دادهای خاص را در برنامه پایتون خود استفاده کنید، مهم است که با دقت مزایا و معایب استفاده از مجموعهها را نیز در نظر بگیرید.
تمرین مجموعهها در پایتون
آیا شما هم به کسب اطلاعات بیشتر در مورد مجموعه در پایتون علاقه مند هستید؟ در این صورت میتوانید تمارین زیر را بررسی کنید.
- حذف مقادیر تکراری از لیست. (راهنمایی: باید از مجموعهها برای حذف این مقادیر استفاده کنید.)
- بررسی زیرمجموعه بودن. شما باید برنامهای بنویسید که دو مجموعه را از کاربر دریافت کند و مشخص نماید که آیا این دو مجموعه زیرمجموعه یکدیگر هستند یا نه؟
- یافتن عناصر مشترک بین دو مجموعه. برنامه شما باید دو مجموعه را به عنوان ورودی دریافت کند و مقادیر مشترک آن را مشخص کند.
نتبجه گیری
همانطور که در این صفحه مشاهده کردید، مجموعه در پایتون کاربردهای گستردهای دارد. علاقه مندان به کسب اطلاعات بیشتر در این مورد میتوانند صفحات آموزش هوش مصنوعی با پایتون رایگان، کتابخانههای پایتون و پکیج جامع علم داده با پایتون را نیز مطالعه کنند. در ضمن، برای شرکت در دورههای تخصصی و مشخص شدن مسیر راه، شما میتوانید از طریق واتساپ با کارشناسان دیتایاد تماس بگیرید. اگر حین کار با مجموعه در پایتون با مشکلی مواجه شوید، میتوانید آن را از طریق قسمت کامنتها مطرح نمایید تا کارشناسان ما آن را بررسی کنند.
سوالات متداول
1-مجموعه با لیست در پایتون چه فرقی دارد؟
از نظر ساختاری، میان لیست و مجموعه در پایتون تفاوتهای زیادی مشاهده میشود. به عنوان مثال، در لیست ترتیب برای ما مهم است. در حالی که در مجموعه خبری از ترتیب نیست! در لیست ما میتوانیم عناصر تکراری هم داشته باشیم در حالی که مجموعه از این ویژگی پشتیبانی نمیکند. در ضمن، مجموعه به ما اجازه نمیدهد تا با استفاده از یک اندیس به اجزای آن دسترسی داشته باشیم. این در حالی است که لیستها قابلیت دسترسی و جستجو بر اساس اندیس را نیز در اختیار دارند. در عوض سرعت مجموعه بالاتر بوده و به کار گیری آن مزایای زیادی را به همراه خواهد داشت.
2-آیا امکان ایجاد لیست خالی در پایتون وجود دارد؟
قطعا بله! برای ایجاد یک مجموعه خالی در پایتون فقط کافی است دستور Set() را بدون آرگومانهای ورودی مورد نیاز به کار گیریم. در نظر داشته باشید که این مجموعه هیچ عضوی را در خود جای نداده است ولی قابل ویرایش است! اگر شما سایر روشهای تولید لیست را به کار گیرید، یک دیکشنری ایجاد میشود پس تنها راه موجود برای دنبال کردن این فرآیند به استفاده از تکنیک معرفی شده اشاره دارد.
3-چگونه میتوان دو مجموعه را با یکدیگر ترکیب کرد؟
خوشبختانه روشهای زیادی را میتوان برای ترکیب دو مجموعه در پایتون مورد استفاده قرار داد. برای دنبال کردن این فرآیند، فقط کافی است عمل اجتماع را به کار برد. نام این دستور در پایتون union است. البته، شما میتوانید از کلمه کلیدی | هم برای دنبال کردن این پروسه استفاده کنید. با این کار، عملیات اجتماع به راحتی انجام میشود.