مجموعه عملیات (به عنوان مثال، تعیین مجموعه اتحادیه، مجموعه محصول، و زیر مجموعه) با نوع مجموعه پایتون

کسب و کار

پایتون یک نوع داده داخلی به نام مجموعه ارائه می دهد که مجموعه ها را مدیریت می کند.

مجموعه نوع مجموعه ای از عناصر غیر تکراری (عناصری که مقادیر یکسان نیستند، عناصر منحصر به فرد) است و می تواند عملیات مجموعه ای مانند مجموعه اتحادیه، مجموعه محصول و مجموعه تفاوت را انجام دهد.

در این قسمت عملیات پایه در عملیات مجموعه از نوع set با کد نمونه توضیح داده شده است.

  • ایجاد اشیاء مجموعه:{}،set()
  • نماد گنجاندن را تنظیم کنید
  • تعداد عناصر در مجموعه:len()
  • افزودن یک عنصر به یک مجموعه:add()
  • حذف یک عنصر از مجموعه:discard()،remove()،pop()،clear()
  • Wasset (ادغام، اتحاد):| اپراتور,union()
  • مجموعه محصولات (قطعات مشترک، تقاطع ها، تقاطع ها):& اپراتور,intersection()
  • مکمل نسبی:-اپراتور,difference()
  • مجموعه تفاوت تقارن:اپراتور ^,symmetric_difference()
  • زیر مجموعه یا نه:<= اپراتور,issubset()
  • مجموعه بالایی یا نه:>= اپراتور,issuperset()
  • تعیین اینکه آیا آنها دو طرف اول هستند یا نه:isdisjoint()

نوع set یک نوع قابل تغییر است که می‌تواند عناصر را اضافه و حذف کند، و همچنین یک نوع frozenset وجود دارد که همان عملیات مجموعه و روش‌های دیگر مانند نوع مجموعه را دارد، اما تغییرناپذیر است (با افزودن، حذف یا تغییر عناصر غیر قابل تغییر است. ).

ایجاد مجموعه شی::{}،set()

تولید شده توسط براکت موج {}

اشیاء از نوع مجموعه را می توان با محصور کردن عناصر در پرانتزهای {} ایجاد کرد.

اگر مقادیر تکراری وجود داشته باشد، نادیده گرفته می شوند و فقط مقادیر منحصر به فرد به عنوان عناصر باقی می مانند.

s = {1, 2, 2, 3, 1, 4}

print(s)
print(type(s))
# {1, 2, 3, 4}
# <class 'set'>

امکان داشتن انواع مختلف به عنوان عناصر وجود دارد. با این حال، اشیاء قابل به روز رسانی مانند انواع لیست را نمی توان ثبت کرد. تاپل ها مجاز هستند.

همچنین، از آنجایی که انواع مجموعه ها نامرتب هستند، ترتیب تولید آنها ذخیره نمی شود.

s = {1.23, 'abc', (0, 1, 2), 'abc'}

print(s)
# {(0, 1, 2), 1.23, 'abc'}

# s = {[0, 1, 2]}
# TypeError: unhashable type: 'list'

انواع مختلف، مانند int و float، در صورتی که مقادیر آنها معادل باشد، تکراری در نظر گرفته می شوند.

s = {100, 100.0}

print(s)
# {100}

از آنجایی که یک پرانتز خالی {} یک نوع فرهنگ لغت در نظر گرفته می شود، یک شی از نوع مجموعه خالی (مجموعه خالی) را می توان با استفاده از سازنده توضیح داده شده در ادامه ایجاد کرد.

s = {}

print(s)
print(type(s))
# {}
# <class 'dict'>

تولید شده توسط constructor set()

اشیاء از نوع set را نیز می توان با constructor set() ایجاد کرد.

تعیین یک شیء تکرارپذیر مانند یک لیست یا تاپل به عنوان آرگومان، یک شیء مجموعه ای را ایجاد می کند که عناصر آن فقط مقادیر منحصر به فرد هستند و عناصر تکراری حذف می شوند.

l = [1, 2, 2, 3, 1, 4]

print(l)
print(type(l))
# [1, 2, 2, 3, 1, 4]
# <class 'list'>

s_l = set(l)

print(s_l)
print(type(s_l))
# {1, 2, 3, 4}
# <class 'set'>

انواع منجمد غیرقابل تغییر با سازنده () frozenset ایجاد می شوند.

fs_l = frozenset(l)

print(fs_l)
print(type(fs_l))
# frozenset({1, 2, 3, 4})
# <class 'frozenset'>

اگر آرگومان حذف شود، یک شی از نوع مجموعه خالی (مجموعه خالی) ایجاد می شود.

s = set()

print(s)
print(type(s))
# set()
# <class 'set'>

عناصر تکراری را می توان با استفاده از set() از یک لیست یا تاپل حذف کرد، اما ترتیب لیست اصلی حفظ نمی شود.

برای تبدیل یک نوع مجموعه به لیست یا تاپل، از list(),tuple() استفاده کنید.

l = [2, 2, 3, 1, 3, 4]

l_unique = list(set(l))
print(l_unique)
# [1, 2, 3, 4]

برای اطلاعات در مورد حذف عناصر تکراری با حفظ نظم، استخراج فقط عناصر تکراری و پردازش عناصر تکراری در یک آرایه دو بعدی (فهرست لیست ها) به مقاله زیر مراجعه کنید.

نماد گنجاندن را تنظیم کنید

علاوه بر درک لیست، درک مجموعه ای نیز وجود دارد. به سادگی پرانتز [] را با پرانتزهای {} در درک لیست جایگزین کنید.

s = {i**2 for i in range(5)}

print(s)
# {0, 1, 4, 9, 16}

برای اطلاعات بیشتر در مورد نشانه گذاری درک لیست به مقاله زیر مراجعه کنید.

تعداد عناصر در مجموعه:len()

تعداد عناصر در یک مجموعه را می توان با تابع داخلی len() بدست آورد.

s = {1, 2, 2, 3, 1, 4}

print(s)
print(len(s))
# {1, 2, 3, 4}
# 4

اگر می خواهید تعداد عناصر موجود در هر لیست را که دارای عناصر با مقادیر تکراری و غیره است بشمارید، به مقاله زیر مراجعه کنید.

افزودن یک عنصر به یک مجموعه:add()

برای افزودن یک عنصر به یک مجموعه، از متد add() استفاده کنید.

s = {0, 1, 2}

s.add(3)
print(s)
# {0, 1, 2, 3}

حذف یک عنصر از مجموعه:discard()،remove()،pop()،clear()

برای حذف یک عنصر از یک مجموعه، از متدهای discard()، remove()، pop() و clear() استفاده کنید.

متد discard() عنصر مشخص شده در آرگومان را حذف می کند. اگر مقداری که در مجموعه وجود ندارد مشخص شود، هیچ کاری انجام نمی شود.

s = {0, 1, 2}

s.discard(1)
print(s)
# {0, 2}

s = {0, 1, 2}

s.discard(10)
print(s)
# {0, 1, 2}

متد remove() نیز عنصر مشخص شده در آرگومان را حذف می کند، اما اگر مقداری که در مجموعه وجود ندارد مشخص شود، یک خطای KeyError برمی گردد.

s = {0, 1, 2}

s.remove(1)
print(s)
# {0, 2}

# s = {0, 1, 2}

# s.remove(10)
# KeyError: 10

متد pop() عناصر را از یک مجموعه حذف می کند و مقادیر آنها را برمی گرداند. نمی توان انتخاب کرد که کدام مقادیر حذف شوند. یک مجموعه خالی منجر به خطای KeyError می شود.

s = {2, 1, 0}

v = s.pop()

print(s)
print(v)
# {1, 2}
# 0

s = {2, 1, 0}

print(s.pop())
# 0

print(s.pop())
# 1

print(s.pop())
# 2

# print(s.pop())
# KeyError: 'pop from an empty set'

متد clear() تمام عناصر را حذف کرده و مجموعه را خالی می کند.

s = {0, 1, 2}

s.clear()
print(s)
# set()

Wasset (ادغام، اتحاد):| اپراتور,union()

مجموعه اتحادیه (ادغام، اتحاد) را می توان با | به دست آورد عملگر یا متد ()union.

s1 = {0, 1, 2}
s2 = {1, 2, 3}
s3 = {2, 3, 4}

s_union = s1 | s2
print(s_union)
# {0, 1, 2, 3}

s_union = s1.union(s2)
print(s_union)
# {0, 1, 2, 3}

چندین آرگومان را می توان برای یک متد مشخص کرد. علاوه بر نوع set، لیست ها و تاپل هایی که می توانند توسط set() به نوع set تبدیل شوند نیز می توانند به عنوان آرگومان تعیین شوند. همین امر در مورد عملگرها و روش های بعدی نیز صدق می کند.

s_union = s1.union(s2, s3)
print(s_union)
# {0, 1, 2, 3, 4}

s_union = s1.union(s2, [5, 6, 5, 7, 5])
print(s_union)
# {0, 1, 2, 3, 5, 6, 7}

مجموعه محصولات (قطعات مشترک، تقاطع ها، تقاطع ها):& اپراتور,intersection()

مجموعه محصول (قطع مشترک، تقاطع، و تقاطع) را می توان با & عملگر یا متد intersection().

s_intersection = s1 & s2
print(s_intersection)
# {1, 2}

s_intersection = s1.intersection(s2)
print(s_intersection)
# {1, 2}

s_intersection = s1.intersection(s2, s3)
print(s_intersection)
# {2}

مکمل نسبی:-اپراتور,difference()

مجموعه تفاوت را می توان با عملگر – یا متد تفاوت () بدست آورد.

s_difference = s1 - s2
print(s_difference)
# {0}

s_difference = s1.difference(s2)
print(s_difference)
# {0}

s_difference = s1.difference(s2, s3)
print(s_difference)
# {0}

مجموعه تفاوت تقارن:اپراتور ^,symmetric_difference()

مجموعه تفاوت متقارن (مجموعه عناصر موجود در تنها یکی از این دو) را می توان با عملگر ^ یا (symmetric_difference) بدست آورد.

معادل تفکیک انحصاری (XOR) در عملیات منطقی.

s_symmetric_difference = s1 ^ s2
print(s_symmetric_difference)
# {0, 3}

s_symmetric_difference = s1.symmetric_difference(s2)
print(s_symmetric_difference)
# {0, 3}

زیر مجموعه یا نه:<= اپراتور,issubset()

برای تعیین اینکه آیا یک مجموعه زیرمجموعه مجموعه دیگری است یا خیر، از عملگر <= یا متد issubset() استفاده کنید.

s1 = {0, 1}
s2 = {0, 1, 2, 3}

print(s1 <= s2)
# True

print(s1.issubset(s2))
# True

هم عملگر <= و هم متد issubset() برای مجموعه های معادل true برمی گردند.

برای تعیین اینکه آیا زیرمجموعه واقعی است یا خیر، از عملگر <= استفاده کنید که مقدار false را برای مجموعه‌های معادل برمی‌گرداند.

print(s1 <= s1)
# True

print(s1.issubset(s1))
# True

print(s1 < s1)
# False

مجموعه بالایی یا نه:>= اپراتور,issuperset()

برای تعیین اینکه آیا یک مجموعه ابر مجموعه دیگری است، از عملگر >= یا issuperset() استفاده کنید.

s1 = {0, 1}
s2 = {0, 1, 2, 3}

print(s2 >= s1)
# True

print(s2.issuperset(s1))
# True

هم عملگر >= و هم متد issuperset() برای مجموعه های معادل true برمی گردند.

برای تعیین اینکه آیا یک ابر مجموعه واقعی است یا خیر، از عملگر >= استفاده کنید که مقدار false را برای مجموعه های معادل برمی گرداند.

print(s1 >= s1)
# True

print(s1.issuperset(s1))
# True

print(s1 > s1)
# False

تعیین اینکه آیا آنها دو طرف اول هستند یا نه:isdisjoint()

برای تعیین اینکه آیا دو مجموعه با یکدیگر اول هستند یا خیر، از متد isdisjoint() استفاده کنید.

s1 = {0, 1}
s2 = {1, 2}
s3 = {2, 3}

print(s1.isdisjoint(s2))
# False

print(s1.isdisjoint(s3))
# True
Copied title and URL