نوع داده مجموعه یا set در پایتون، نمایانگر مجموعههای ریاضی است. مهمترین مزیت استفاده از یک مجموعه در مقابل لیست، این است که این یک روش کاملا بهینه شده برای بررسی وجود یک عنصر خاص در دادهها است. در ادامهی این بخش از آموزش پایتون مقدماتی، با نوع داده مجموعه در پایتون بیشتر آشنا خواهید شد.
نوع داده مجموعه در پایتون
نوع داده مجموعه یا set در پایتون، چندین متغیر بدون ترتیب و بدون شمارهگذاری یا ایندکسینگ است. در پایتون، مجموعهها با علامت
{} نوشته میشوند و اعضای آن با کاما جدا میشوند.
مثال #۱: ساخت یک مجموعه در پایتون
1 2 |
thisSet = {"apple", "banana", "cherry"} print(thisSet) |
خروجی #۱:
1 |
{'cherry', 'banana', 'apple'} |
نکته: مجموعهها ترتیب ندارند، بنابراین نمیتوان مطمئن بود عضوهای داخل مجموعه با چه ترتیبی به نمایش در میآیند.
دسترسی به عضوهای set در پایتون
چون مجموعهها ترتیب ندارند، نمیتوانید با استناد به شمارنده یا ایندکس، به اعضای آنها دسترسی پیدا کنید. اما میتوانید با استفاده از حلقه for، بین عضوهای یک مجموعه حلقه ایجاد کنید و اعضا را نمایش دهید؛ یا با استفاده از کلیدواژه in بررسی کنید که آیا یک مقدار خاص در این مجموعه وجود دارد یا خیر.
مثال #۲: ایجاد حلقه در مجموعه و نمایش خروجی
1 2 3 4 |
thisSet = {"apple", "banana", "cherry"} for x in thisSet: print(x) |
خروجی #۲:
1 2 3 |
cherry banana apple |
مثال #۳: بررسی کردن این که آیا banana در این مجموعه وجود دارد یا خیر
1 2 3 |
thisset = {"apple", "banana", "cherry"} print("banana" in thisset) |
خروجی #۳:
1 |
True |
اضافه کردن عضو به یک set در پایتون
زمانی که یک مجموعه ایجاد میشود، دیگر قادر به تغییر اعضای آن نخواهید بود؛ اما میتوانید به آن اعضای جدید اضافه کنید. برای اضافه کردن یک عضو یا آیتم به مجموعه از متد ()add استفاده میکنیم. برای افزودن بیش از یک عضو به مجموعه از متد ()update استفاده میکنیم. در مثالهای زیر این روشها را بررسی میکنیم.
مثال #۴: افزودن یک عضو به مجموعه با ()add
1 2 3 |
thisSet = {"apple", "banana", "cherry"} thisSet.add("orange") print(thisSet) |
خروجی #۴:
1 |
{'orange', 'cherry', 'banana', 'apple'} |
مثال #۵: افزودن چند عضو به مجموعه با ()update
1 2 3 |
thisSet = {"apple", "banana", "cherry"} thisSet.update(["orange", "mango", "grapes"]) print(thisSet) |
خروجی #۵:
1 |
{'orange', 'cherry', 'mango', 'banana', 'grapes', 'apple'} |
بررسی طول یک set در پایتون
برای چک کردن طول یک مجموعه، از متد
()len استفاده میکنیم.
مثال #۶: نمایش تعداد عضوهای یک مجموعه
1 2 |
thisSet = {"apple", "banana", "cherry"} print(len(thisSet)) |
خروجی #۶:
1 |
3 |
حذف یک عضو در مجموعه
برای حذف یک عضو از مجموعه، میتوانیم از متدهای
()remove و
()discard استفاده کنیم.
مثال #۷: حذف عضو
banana با استفاده از متد
()remove
1 2 3 |
thisSet = {"apple", "banana", "cherry"} thisSet.remove("banana") print(thisSet) |
خروجی #۷:
1 |
{'apple', 'cherry'} |
نکته: اگر عضوی که قصد حذف آن را دارید وجود نداشته باشد، در دستور ()remove با خطا مواجه میشوید.
مثال #۸: حذف عضو banana با استفاده از متد ()discard
1 2 3 |
thisSet = {"apple", "banana", "cherry"} thisSet.discard("banana") print(thisSet) |
خروجی #۸:
1 |
{'cherry', 'apple'} |
نکته: اگر عضوی که قصد حذف آن را دارید وجود نداشته باشد، در دستور ()discard با خطا مواجه نمیشوید.
همچنین میتوانید از متد ()pop برای حذف یک عضو استفاده کنید؛ ولی دقت کنید که این متد فقط آخرین عضو مجموعه را حذف میکند. میدانیم که مجموعهها دادههایی بدون ترتیب هستند؛ بنابراین ما از قبل نمیدانیم که کدام عضو حذف میشود!
خروجی متد ()pop، همان عضو حذفشده است.
مثال #۹: حذف آخرین عضو با متد ()pop
1 2 3 4 5 |
thisSet = {"apple", "banana", "cherry"} x = thisSet.pop() print(x) print(thisSet) |
خروجی #۹:
1 2 |
banana {'apple', 'cherry'} |
نکته: دقت کنید که مجموعهها ترتیب ندارند لذا نمیتوانید مطمئن باشید که با استفاده از ()pop کدام عضو را حذف خواهید کرد.
مثال #۱۰: متد ()clear مجموعه را خالی میکند:
1 2 3 |
thisSet = {"apple", "banana", "cherry"} thisSet.clear() print(thisSet) |
خروجی #۱۰:
1 |
set() |
مثال #۱۱: کلیدواژه del به طور کامل مجموعه را حذف میکند.
1 2 3 |
thisSet = {"apple", "banana", "cherry"} del thisSet print(thisSet) # this will raise an error because the set no longer exists |
خروجی #۱۱:
1 |
NameError: name 'thisSet' is not defined |
اتصال دو مجموعه به یکدیگر در پایتون
چند روش برای اتصال دو یا چند مجموعه در پایتون وجود دارد.
شما میتوانید از متد
()union استفاده کنید؛ با این کار یک مجموعهی جدید شامل اجتماع دو مجموعهی ورودی خواهید داشت. همچنین متد
()update نیز این کار را انجام میدهد، با این تقاوت که میتوان همهی یک مجموعه را به مجموعهی دیگر اضافه کرد و مجموعهی سومی ساخته نمیشود.
مثال #۱۲: متد ()union که یک مجموعهی جدید شامل همهی اعضای دو مجموعهی اول برمیگرداند.
1 2 3 4 5 |
set1 = {"a", "b" , "c"} set2 = {1, 2, 3} set3 = set1.union(set2) print(set3) |
خروجی #۱۲:
1 |
{'b', 2, 'a', 1, 'c', 3} |
مثال #۱۳: متد ()update اعضای set2 را وارد مجوعهی set1 میکند.
1 2 3 4 5 |
set1 = {"a", "b" , "c"} set2 = {1, 2, 3} set1.update(set2) print(set1) |
خروجی #۱۳:
1 |
{2, 'b', 3, 'c', 'a', 1} |
نکته: هر دو متد ()union و ()update اعضایی که در مجموعه تکراری باشند را حذف میکنند.
روشهای دیگری نیز برای اتصال دو مجموعه به هم وجود دارد؛ روشهایی که فقط مجموعهی جدید را نگه میدارد یا اصلا نگه نمیدارند. میتوانید در انتهای این صفحه، لیست کاملی از متدهای set در پایتون را مشاهده کنید.
استفاده از ()set برای ایجاد set در پایتون
روش دیگری برای ساخت مجموعه در پایتون استفاده از
()set است.
مثال #۱۴: ساخت یک مجموعه با استفاده از
()set
1 2 |
thisSet = set(("apple", "banana", "cherry")) # note the double round-brackets print(thisSet) |
1 |
{'banana', 'apple', 'cherry'} |
لیست متدهای پایتون برای مجموعه
متد | توضیحات متد |
()add | افزودن یک عضو به مجموعه |
()clear | حذف همهی اعضای یک مجموعه |
()copy | یک کپی از مجموعه را بر میگرداند |
()difference | این متد تفاوت (منهای) دو مجموعه را بر میگرداند |
()difference_update | اعضای یک مجموعه که در یک مجموعهی دیگر نیز هستند را حذف میکند |
()discard | حذف یک عضو خاص |
()intersection | اشتراک دو مجموعه را بر میگرداند |
()intersection_update | اعضای یک مجموعه که در مجموعهی دیگر نیستد را حذف میکند |
()isdisjoint | بررسی میکند که آیا دو مجموعه اشتراکی دارند یا خیر |
()issubset | بررسی میکند که آیا مجموعه زیرمجموعهی یک مجموعهی دیگر است یا خیر |
()issuperset | بررسی میکند که آیا مجموعه در برگیرندهی مجموعهی دیگر هست یا خیر |
()pop | یک عضو مجموعه را حذف میکند |
()remove | یک عضو خاص مجموعه را حذف میکند |
()symmetric_difference | از دو مجموعه اشتراک متقارن (اجتماع منهای اشتراک) میگیرد |
()symmetric_difference_update | اضافه کردن اشتراک متقارن یک مجموعه و مجموعهی دیگری |
()union | اجتماع دو مجموعه را بر میگرداند |
()update | با افزودن اجتماع یک مجموعه و سایر مجموعهها، آن را به روز رسانی میکند |
سلام عرض ادب
()intersection اشتراک هست نه اجتماع.
The intersection() method returns a new set with elements that are common to all sets
خیلی ممنون از توجه شما. 🙏 اصلاح شد.