Python کی سیٹ قسم کے ساتھ آپریشنز (مثلاً، یونین سیٹ، پروڈکٹ سیٹ، اور سب سیٹ کا تعین کرنا)

کاروبار

Python ایک بلٹ ان ڈیٹا ٹائپ فراہم کرتا ہے، سیٹ، جو سیٹ کو سنبھالتا ہے۔

ٹائپ سیٹ غیر ڈپلیکیٹ عناصر (عناصر جو ایک جیسی قدر نہیں، منفرد عناصر) کا مجموعہ ہے اور سیٹ آپریشنز جیسے یونین سیٹ، پروڈکٹ سیٹ، اور فرق سیٹ انجام دے سکتا ہے۔

اس سیکشن میں، سیٹ ٹائپ سیٹ آپریشنز میں بنیادی آپریشنز کو سیمپل کوڈ کے ساتھ بیان کیا گیا ہے۔

  • سیٹ اشیاء کی تخلیق:{},set()
  • شامل کرنے کا اشارہ مقرر کریں۔
  • سیٹ میں عناصر کی تعداد:len()
  • ایک سیٹ میں عنصر شامل کرنا:add()
  • سیٹ سے ایک عنصر کو ہٹا دیں۔:discard(),remove(),pop(),clear()
  • وسیٹ (انضمام، یونین):|آپریٹر,union()
  • مصنوعات کے سیٹ (عام حصے، چوراہا، چوراہا):& آپریٹر,intersection()
  • رشتہ دار تکمیل:-آپریٹر,difference()
  • توازن فرق سیٹ:^ آپریٹر,symmetric_difference()
  • ذیلی سیٹ یا نہیں؟:<= آپریٹر,issubset()
  • اوپری سیٹ یا نہیں؟:>= آپریٹر,issuperset()
  • اس بات کا تعین کہ آیا وہ باہمی طور پر پرائم ہیں یا نہیں۔:isdisjoint()

سیٹ کی قسم ایک تغیر پذیر قسم ہے جو عناصر کو شامل اور حذف کر سکتی ہے، اور ایک منجمد قسم بھی ہے جس میں ایک ہی سیٹ آپریشن اور سیٹ کی قسم کے دوسرے طریقے ہیں لیکن وہ ناقابل تغیر ہے (عناصر کو شامل کرنے، حذف کرنے، یا دوسری صورت میں ترمیم کر کے اس میں ترمیم نہیں کی جا سکتی ہے۔ )۔

سیٹ آبجیکٹ کی تخلیق::{},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'>

کنسٹرکٹر سیٹ () کے ذریعہ تیار کردہ

کنسٹرکٹر سیٹ() کے ساتھ ٹائپ سیٹ کی آبجیکٹ بھی بنائی جا سکتی ہیں۔

کسی قابل تکرار آبجیکٹ کی وضاحت کرنا جیسے کہ فہرست یا ٹوپل بطور دلیل ایک سیٹ آبجیکٹ تیار کرتا ہے جس کے عناصر صرف منفرد اقدار ہوتے ہیں، ڈپلیکیٹ عناصر کو خارج کر دیا جاتا ہے۔

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'>

کنسٹرکٹر فروزن سیٹ () کے ساتھ ناقابل تغیر منجمد اقسام تخلیق کی جاتی ہیں۔

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'>

ڈپلیکیٹ عناصر کو فہرست سے ہٹایا جا سکتا ہے یا سیٹ() کا استعمال کرتے ہوئے ٹوپل کیا جا سکتا ہے، لیکن اصل فہرست کی ترتیب محفوظ نہیں ہے۔

کسی سیٹ کی قسم کو فہرست یا ٹوپل میں تبدیل کرنے کے لیے، 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}

ریمو () طریقہ دلیل میں بیان کردہ عنصر کو بھی ہٹاتا ہے، لیکن اگر سیٹ میں موجود نہ ہونے والی قدر کی وضاحت کی گئی ہو تو ایک ایرر 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()

وسیٹ (انضمام، یونین):|آپریٹر,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}

ایک طریقہ کے لیے متعدد دلائل بیان کیے جا سکتے ہیں۔ سیٹ کی قسم کے علاوہ، فہرستیں اور ٹیپلز جو سیٹ () کے ذریعے سیٹ کی قسم میں تبدیل کی جا سکتی ہیں، کو بھی دلیل کے طور پر بیان کیا جا سکتا ہے۔ اسی کے بعد کے آپریٹرز اور طریقوں پر لاگو ہوتا ہے۔

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() طریقہ مساوی سیٹوں کے لیے درست ہو جاتے ہیں۔

اس بات کا تعین کرنے کے لیے کہ آیا یہ صحیح سب سیٹ ہے، <= آپریٹر استعمال کریں، جو مساوی سیٹوں کے لیے غلط لوٹاتا ہے۔

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() طریقہ مساوی سیٹوں کے لیے درست ہو جاتے ہیں۔

اس بات کا تعین کرنے کے لیے کہ آیا یہ ایک حقیقی سپر سیٹ ہے، >= آپریٹر استعمال کریں، جو مساوی سیٹوں کے لیے غلط لوٹاتا ہے۔

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