set در پایتون
set یک ساختار داده در پایتون است که برای نگهداری مجموعهای از عناصر یکتا استفاده میشود. مشابه با لیستها و دیکشنریها ساخته میشود اما از نظر رفتار متفاوت است. یک set میتواند با استفاده از آکولادها {}
یا تابع set()
ایجاد شود.
num_set = {1, 2, 3, 4, 5}
word_set = set(["spam", "eggs", "sausage"])
print(3 in num_set)
print("spam" not in word_set)
خروجی:
>>>
True
False
>>>
نکته: برای ایجاد یک set خالی باید از set()
استفاده کرد. زیرا {}
یک دیکشنری خالی میسازد. setها برخلاف لیستها دارای اندیس نیستند و نمیتوان به اعضای آنها با اندیس دسترسی داشت. همچنین عناصر تکراری در آنها ذخیره نمیشود.
nums = {1, 2, 1, 3, 1, 4, 5, 6}
print(nums)
nums.add(-7)
nums.remove(3)
print(nums)
خروجی:
>>>
{1, 2, 3, 4, 5, 6}
{1, 2, 4, 5, 6, -7}
>>>
برای اضافه کردن عناصر به set از متد add
استفاده میشود و برای حذف، از remove
یا discard
. همچنین متد pop
یک عنصر دلخواه را حذف و بازمیگرداند.
عملیات ریاضی روی set
setها از عملیات ریاضیاتی زیر پشتیبانی میکنند:
|
(اتحاد): ترکیب دو set&
(تقاطع): عناصر مشترک بین دو set-
(اختلاف): عناصر موجود در set اول که در set دوم نیستند^
(اختلاف متقارن): عناصری که فقط در یکی از setها وجود دارند
first = {1, 2, 3, 4, 5, 6}
second = {4, 5, 6, 7, 8, 9}
print(first | second)
print(first & second)
print(first - second)
print(second - first)
print(first ^ second)
خروجی:
>>>
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{4, 5, 6}
{1, 2, 3}
{8, 9, 7}
{1, 2, 3, 7, 8, 9}
>>>
متدهای پرکاربرد set
add(elem)
: افزودن یک عنصرremove(elem)
: حذف یک عنصر (در صورت نبودن، خطا میدهد)discard(elem)
: حذف یک عنصر بدون ایجاد خطا در صورت نبود آنpop()
: حذف و بازگرداندن یک عنصر دلخواهclear()
: حذف همه عناصرupdate(iterable)
: افزودن چند عنصر از یک iterableintersection(other_set)
: بازگرداندن تقاطعunion(other_set)
: بازگرداندن اتحادdifference(other_set)
: بازگرداندن اختلافsymmetric_difference(other_set)
: بازگرداندن اختلاف متقارن
جمعبندی
setها برای مواقعی مناسب هستند که به مجموعهای از عناصر یکتا نیاز داریم. سرعت جستجو در set بیشتر از لیست است و مناسب برای عملیات مقایسه، فیلتر کردن و حذف تکراریها میباشد. آنها یکی از ساختارهای مهم داده در پایتون هستند که به کمک عملیات ریاضیاتی قدرت بالایی در ترکیب و تحلیل دادهها ارائه میدهند.