توابع مجموعه در پایتون و کاربرد آنها

Please login to bookmark Close

توابع مجموعه در پایتون

در واقع، در این درس توابع مجموعه در پایتون را از پایه و با مثال یاد می‌گیرید.

بنابراین در درس قبل دیدید که مجموعه تکراری قبول نمی‌کند و ترتیب ندارد. حالا وقت آن است که ببینید چرا این ساختار واقعاً قدرتمند است.

همچنین، فرض کنید دو فهرست دارید: کسانی که دوره‌ی پایتون خریده‌اند و کسانی که دوره‌ی جنگو خریده‌اند. سؤال‌هایی که پیش می‌آید طبیعی است: چه کسانی هر دو را خریده‌اند؟ چه کسانی فقط یکی را؟ روی هم چند نفرند؟

به این ترتیب، با لیست و حلقه هم می‌شود این‌ها را حساب کرد، ولی با مجموعه هر کدامشان یک خط است.

اشتراک

python = {"علی", "زهرا", "رضا"}
django = {"زهرا", "رضا", "مریم"}

print(python & django)
print(python.intersection(django))
{'رضا', 'زهرا'}
{'رضا', 'زهرا'}

علاوه بر این، هر دو شکل یک کار می‌کنند. علامت‌ها کوتاه‌ترند و نام متدها خواناتر؛ هر کدام را دوست دارید انتخاب کنید ولی در یک پروژه یکدست باشید.

اجتماع

print(python | django)
{'علی', 'زهرا', 'رضا', 'مریم'}

در نهایت، همه‌ی افراد، بدون تکرار. این دقیقاً همان «تعداد کل دانشجویان یکتا» است که در گزارش‌ها لازم می‌شود.

تفاضل

print(python - django)
print(django - python)
{'علی'}
{'مریم'}

در واقع، دقت کنید که ترتیب مهم است. تفاضل مثل تفریق است نه مثل جمع. این مورد دقیقاً جواب سؤال «کسانی که پایتون خریده‌اند ولی هنوز جنگو نخریده‌اند» است؛ دقیقاً همان فهرستی که برای فروش دوره‌ی بعدی لازم دارید.

تفاضل متقارن

print(python ^ django)
{'علی', 'مریم'}

یعنی کسانی که فقط در یکی از دو مجموعه هستند و در هر دو نیستند.

       python                django
    ┌────────────┐      ┌────────────┐
    │   علی      │زهرا رضا│   مریم    │
    └────────────┘      └────────────┘
         ▲          ▲           ▲
         │          │           │
     python-django   &      django-python
         └────── ^ ────────────┘
     همه‌ی سه ناحیه روی هم =  |

زیرمجموعه

a = {"زهرا", "رضا"}

print(a.issubset(python))
print(python.issuperset(a))
True
True

افزودن و حذف

colors = {"قرمز", "سبز"}

colors.add("آبی")
colors.discard("زرد")   # اگر نباشد خطا نمی‌دهد
colors.remove("سبز")    # اگر نباشد خطا می‌دهد

print(colors)

تفاوت discard و remove را جدی بگیرید. وقتی مطمئن نیستید عضوی وجود دارد یا نه، discard انتخاب امن‌تری است.

جدول مرجع

معنیمتدعلامت
اعضای مشترکintersection&
همه‌ی اعضاunion|
اعضای اولی که در دومی نیستندdifference-
اعضای غیرمشترکsymmetric_difference^
عملیات روی مجموعه‌ها

اشتباهات رایج

انتظار خروجی مرتب

هیچ‌کدام از این عملیات، ترتیب مشخصی تضمین نمی‌کنند. اگر خروجی مرتب می‌خواهید، آخر کار sorted بزنید.

استفاده از علامت‌ها روی لیست

[1, 2] & [2, 3]
TypeError: unsupported operand type(s) for &: 'list' and 'list'

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

result = set([1, 2]) & set([2, 3])
print(result)

جمع‌بندی

مجموعه‌ها هر جا که مسئله بوی «مشترک»، «در یکی هست در دیگری نیست» یا «یکتا» می‌دهد، بهترین ابزارند. کدی که با مجموعه یک خط می‌شود، با حلقه ده خط می‌شود.

در درس بعدی وارد موضوع تازه‌ای می‌شویم: تابع.

برای مطالعه‌ی بیشتر می‌توانید به مستندات رسمی پایتون سر بزنید.

این درس بخشی از دوره آموزش پایتون مقدماتی است.

Please login to bookmark Close
پیشرفت شما در «دوره آموزش پایتون مقدماتی» (70%)
نظرات

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

70%
پیشرفت

سرفصل دوره

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم