सेट करो

यह बिल्ट-इन सेट टाइप है. सेट, यूनीक वैल्यू का ऐसा कलेक्शन होता है जिसे बदला जा सकता है. सेट के एलिमेंट. सेट के टाइप का नाम "set" है.

सेट, वैल्यू को जोड़ने, हटाने या उसकी मौजूदगी की जांच करने के लिए, कॉन्स्टेंट-टाइम ऑपरेशन उपलब्ध कराते हैं. सेट को हैश टेबल का इस्तेमाल करके लागू किया जाता है. इसलिए, डिक्शनरी की कुंजियों की तरह ही, सेट के एलिमेंट को हैश किया जा सकता है. किसी वैल्यू का इस्तेमाल सेट के एलिमेंट के तौर पर सिर्फ़ तब किया जा सकता है, जब उसका इस्तेमाल डिक्शनरी की कुंजी के तौर पर किया जा सकता हो.

set() बिल्ट-इन फ़ंक्शन का इस्तेमाल करके सेट बनाए जा सकते हैं. यह फ़ंक्शन, अपने वैकल्पिक आर्ग्युमेंट के यूनीक एलिमेंट वाला एक नया सेट दिखाता है. यह आर्ग्युमेंट, दोहराने लायक होना चाहिए. बिना किसी तर्क के set() को कॉल करने पर, एक खाली सेट बनता है. सेट में कोई लिटरल सिंटैक्स नहीं होता.

in और not in ऑपरेटर यह जांच करते हैं कि कोई वैल्यू किसी सेट में है या नहीं:

s = set(["a", "b", "c"])
"a" in s  # True
"z" in s  # False

सेट को दोहराया जा सकता है. इसलिए, इसका इस्तेमाल for लूप, लिस्ट कॉम्प्रिहेंशन, और दोहराए जा सकने वाले आइटम पर काम करने वाले अलग-अलग बिल्ट-इन फ़ंक्शन के ऑपरेंड के तौर पर किया जा सकता है. इसकी लंबाई को len() बिल्ट-इन फ़ंक्शन का इस्तेमाल करके वापस पाया जा सकता है. साथ ही, इटरेशन का क्रम वही होता है जिसमें एलिमेंट को सेट में पहली बार जोड़ा गया था:

s = set(["z", "y", "z", "y"])
len(s)       # prints 2
s.add("x")
len(s)       # prints 3
for e in s:
    print e  # prints "z", "y", "x"

बूलियन कॉन्टेक्स्ट में इस्तेमाल किया गया सेट, सिर्फ़ तब सही होता है, जब वह खाली न हो.

s = set()
"non-empty" if s else "empty"  # "empty"
t = set(["x", "y"])
"non-empty" if t else "empty"  # "non-empty"

== और != का इस्तेमाल करके, सेट की तुलना की जा सकती है. इससे यह पता चलता है कि सेट बराबर हैं या नहीं. एक सेट s, t के बराबर होता है. ऐसा सिर्फ़ तब होता है, जब t एक ऐसा सेट हो जिसमें एक जैसे एलिमेंट हों. इसमें इटरेट करने के क्रम से कोई फ़र्क़ नहीं पड़ता. खास तौर पर, कोई सेट, उसके एलिमेंट की सूची के बराबर नहीं होता. सेट, दूसरे सेट के हिसाब से क्रम में नहीं होते. साथ ही, <, <=, >, >= का इस्तेमाल करके दो सेट की तुलना करने या सेट के क्रम को क्रम से लगाने की कोशिश करने पर, ऐसा नहीं हो पाएगा.

set() == set()              # True
set() != []                 # True
set([1, 2]) == set([2, 1])  # True
set([1, 2]) != [1, 2]       # True

दो सेट पर | ऑपरेशन करने से, दोनों सेट का यूनीयन मिलता है. यह एक ऐसा सेट होता है जिसमें मूल सेट में से किसी एक या दोनों में मौजूद एलिमेंट शामिल होते हैं.

set([1, 2]) | set([3, 2])  # set([1, 2, 3])

दो सेट पर & ऑपरेशन करने से, दोनों सेट का इंटरसेक्शन मिलता है. यह एक ऐसा सेट होता है जिसमें सिर्फ़ वे एलिमेंट होते हैं जो दोनों ओरिजनल सेट में मौजूद होते हैं.

set([1, 2]) & set([2, 3])  # set([2])
set([1, 2]) & set([3, 4])  # set()

दो सेट पर - ऑपरेशन करने से, दोनों सेट के बीच का अंतर पता चलता है. यह एक ऐसा सेट होता है जिसमें बाईं ओर मौजूद सेट के वे एलिमेंट शामिल होते हैं जो दाईं ओर मौजूद सेट में नहीं होते.

set([1, 2]) - set([2, 3])  # set([1])
set([1, 2]) - set([3, 4])  # set([1, 2])

दो सेट पर ^ ऑपरेशन करने से, दोनों सेट के बीच का सिमेट्रिक अंतर मिलता है. यह एक ऐसा सेट होता है जिसमें दोनों ओरिजनल सेट में से सिर्फ़ एक में मौजूद एलिमेंट शामिल होते हैं.

set([1, 2]) ^ set([2, 3])  # set([1, 3])
set([1, 2]) ^ set([3, 4])  # set([1, 2, 3, 4])

ऊपर दी गई हर कार्रवाई में, नतीजे के तौर पर मिले सेट के एलिमेंट, ऑपरेंड के दो सेट के क्रम में ही होते हैं. साथ ही, बाईं ओर मौजूद सेट से लिए गए सभी एलिमेंट, दाईं ओर मौजूद सेट में मौजूद एलिमेंट से पहले क्रम में होते हैं.

इससे जुड़े ऑगमेंटेड असाइनमेंट, |=, &=, -=, और ^=, बाईं ओर मौजूद सेट में बदलाव करते हैं.

s = set([1, 2])
s |= set([2, 3, 4])     # s now equals set([1, 2, 3, 4])
s &= set([0, 1, 2, 3])  # s now equals set([1, 2, 3])
s -= set([0, 1])        # s now equals set([2, 3])
s ^= set([3, 4])        # s now equals set([2, 4])

Starlark में बदली जा सकने वाली सभी वैल्यू की तरह, सेट को भी फ़्रीज़ किया जा सकता है. फ़्रीज़ करने के बाद, इसे अपडेट करने की कोशिश करने वाले सभी ऑपरेशन पूरे नहीं होंगे.

सदस्य

जोड़ें

None set.add(element)

सेट में कोई एलिमेंट जोड़ता है.

सेट में पहले से मौजूद वैल्यू को add किया जा सकता है. इससे सेट में कोई बदलाव नहीं होता.

अगर आपको किसी सेट में एक से ज़्यादा एलिमेंट जोड़ने हैं, तो update या |= ऑगमेंटेड असाइनमेंट ऑपरेशन देखें.

पैरामीटर

पैरामीटर ब्यौरा
element ज़रूरी है
जोड़ने के लिए एलिमेंट.

मिटाएं

None set.clear()

सेट के सभी एलिमेंट हटाता है.

अंतर करें

set set.difference(*others)

यह फ़ंक्शन, एक नया बदलाव किया जा सकने वाला सेट दिखाता है. इसमें इस सेट और अन्य सेट के बीच का अंतर होता है.

अगर s और t सेट हैं, तो s.difference(t), s - t के बराबर है. हालांकि, ध्यान दें कि - ऑपरेशन के लिए, दोनों तरफ़ सेट होने चाहिए. वहीं, difference तरीके में सीक्वेंस और डिक्शनरी भी स्वीकार की जाती हैं.

difference को बिना किसी तर्क के कॉल किया जा सकता है. इससे सेट की कॉपी मिलती है.

उदाहरण के लिए,

set([1, 2, 3]).difference([2])             # set([1, 3])
set([1, 2, 3]).difference([0, 1], [3, 4])  # set([2])

पैरामीटर

पैरामीटर ब्यौरा
others ज़रूरी है
हैश किए जा सकने वाले एलिमेंट के कलेक्शन.

difference_update

None set.difference_update(*others)

इस सेट में मौजूद किसी भी अन्य सेट में मौजूद एलिमेंट हटाता है.

अगर s और t सेट हैं, तो s.difference_update(t), s -= t के बराबर है. हालांकि, ध्यान दें कि -= ऑगमेंटेड असाइनमेंट के लिए, दोनों साइड के सेट होने ज़रूरी हैं. वहीं, difference_update तरीके में सीक्वेंस और डिक्शनरी भी स्वीकार की जाती हैं.

difference_update को बिना किसी तर्क के कॉल किया जा सकता है. इससे सेट में कोई बदलाव नहीं होता.

उदाहरण के लिए,

s = set([1, 2, 3, 4])
s.difference_update([2])             # None; s is set([1, 3, 4])
s.difference_update([0, 1], [4, 5])  # None; s is set([3])

पैरामीटर

पैरामीटर ब्यौरा
others ज़रूरी है
हैश किए जा सकने वाले एलिमेंट के कलेक्शन.

खारिज करें

None set.discard(element)

अगर सेट में कोई एलिमेंट मौजूद है, तो उसे हटाता है.

सेट में मौजूद नहीं है, तो वैल्यू को discard किया जा सकता है. इससे सेट में कोई बदलाव नहीं होता. अगर आपको किसी ऐसे एलिमेंट को हटाने की कोशिश करने पर गड़बड़ी का मैसेज दिखाना है जो मौजूद नहीं है, तो remove का इस्तेमाल करें. अगर आपको किसी सेट से एक से ज़्यादा एलिमेंट हटाने हैं, तो difference_update या -= augmented assignment ऑपरेशन देखें.

उदाहरण के लिए,

s = set(["x", "y"])
s.discard("y")  # None; s == set(["x"])
s.discard("y")  # None; s == set(["x"])

पैरामीटर

पैरामीटर ब्यौरा
element ज़रूरी है
यह वह एलिमेंट है जिसे खारिज करना है. हैश किया जा सकने वाला होना चाहिए.

इंटरसेक्शन

set set.intersection(*others)

यह फ़ंक्शन, एक नया सेट दिखाता है. इसमें इस सेट और अन्य सेट के इंटरसेक्शन शामिल होते हैं.

अगर s और t सेट हैं, तो s.intersection(t), s & t के बराबर है. हालांकि, ध्यान दें कि & ऑपरेशन के लिए, दोनों साइड को सेट होना ज़रूरी है. वहीं, intersection तरीके में सीक्वेंस और डिक्शनरी भी स्वीकार की जाती हैं.

intersection को बिना किसी तर्क के कॉल किया जा सकता है. इससे सेट की कॉपी मिलती है.

उदाहरण के लिए,

set([1, 2]).intersection([2, 3])             # set([2])
set([1, 2, 3]).intersection([0, 1], [1, 2])  # set([1])

पैरामीटर

पैरामीटर ब्यौरा
others ज़रूरी है
हैश किए जा सकने वाले एलिमेंट के कलेक्शन.

intersection_update

None set.intersection_update(*others)

यह फ़ंक्शन, इस सेट से उन सभी एलिमेंट को हटा देता है जो अन्य सभी सेट में नहीं मिलते.

अगर s और t सेट हैं, तो s.intersection_update(t), s &= t के बराबर है. हालांकि, ध्यान दें कि &= ऑगमेंटेड असाइनमेंट के लिए, दोनों पक्षों का सेट होना ज़रूरी है. वहीं, intersection_update तरीके में सीक्वेंस और डिक्शनरी भी स्वीकार की जाती हैं.

intersection_update को बिना किसी तर्क के कॉल किया जा सकता है. इससे सेट में कोई बदलाव नहीं होता.

उदाहरण के लिए,

s = set([1, 2, 3, 4])
s.intersection_update([0, 1, 2])       # None; s is set([1, 2])
s.intersection_update([0, 1], [1, 2])  # None; s is set([1])

पैरामीटर

पैरामीटर ब्यौरा
others ज़रूरी है
हैश किए जा सकने वाले एलिमेंट के कलेक्शन.

isdisjoint

bool set.isdisjoint(other)

अगर इस सेट में कोई भी एलिमेंट दूसरे सेट से मेल नहीं खाता है, तो यह फ़ंक्शन सही वैल्यू दिखाता है.

उदाहरण के लिए,

set([1, 2]).isdisjoint([3, 4])  # True
set().isdisjoint(set())         # True
set([1, 2]).isdisjoint([2, 3])  # False

पैरामीटर

पैरामीटर ब्यौरा
other ज़रूरी है
हैश किए जा सकने वाले एलिमेंट का कलेक्शन.

issubset

bool set.issubset(other)

अगर यह सेट किसी दूसरे सेट का सबसेट है, तो यह फ़ंक्शन सही वैल्यू दिखाता है.

ध्यान दें कि किसी सेट को हमेशा उसका सबसेट माना जाता है.

उदाहरण के लिए,

set([1, 2]).issubset([1, 2, 3])  # True
set([1, 2]).issubset([1, 2])     # True
set([1, 2]).issubset([2, 3])     # False

पैरामीटर

पैरामीटर ब्यौरा
other ज़रूरी है
हैश किए जा सकने वाले एलिमेंट का कलेक्शन.

issuperset

bool set.issuperset(other)

अगर यह सेट, किसी दूसरे सेट का सुपरसेट है, तो यह फ़ंक्शन सही वैल्यू दिखाता है.

ध्यान दें कि किसी सेट को हमेशा खुद का सुपरसेट माना जाता है.

उदाहरण के लिए,

set([1, 2, 3]).issuperset([1, 2])     # True
set([1, 2, 3]).issuperset([1, 2, 3])  # True
set([1, 2, 3]).issuperset([2, 3, 4])  # False

पैरामीटर

पैरामीटर ब्यौरा
other ज़रूरी है
हैश किए जा सकने वाले एलिमेंट का कलेक्शन.

पॉप

unknown set.pop()

यह सेट के पहले एलिमेंट को हटाता है और उसे दिखाता है. यह एलिमेंट, सेट में मौजूद एलिमेंट के क्रम के हिसाब से होता है. यह क्रम, सेट में एलिमेंट को पहली बार जोड़ने के क्रम के हिसाब से होता है.

सेट खाली होने पर, यह फ़ंक्शन काम नहीं करता.

उदाहरण के लिए,

s = set([3, 1, 2])
s.pop()  # 3; s == set([1, 2])
s.pop()  # 1; s == set([2])
s.pop()  # 2; s == set()
s.pop()  # error: empty set

कॉन्टेंट हटाना

None set.remove(element)

यह फ़ंक्शन, सेट से किसी ऐसे एलिमेंट को हटाता है जो सेट में मौजूद होना चाहिए.

अगर सेट में एलिमेंट मौजूद नहीं है, तो remove फ़ेल हो जाता है. अगर आपको किसी ऐसे एलिमेंट को हटाने की कोशिश करने पर गड़बड़ी नहीं करनी है जो मौजूद नहीं है, तो इसके बजाय discard का इस्तेमाल करें. अगर आपको किसी सेट से एक से ज़्यादा एलिमेंट हटाने हैं, तो difference_update या -= असाइनमेंट ऑपरेशन देखें.

पैरामीटर

पैरामीटर ब्यौरा
element ज़रूरी है
हटाया जाने वाला एलिमेंट. सेट का एलिमेंट होना चाहिए (और हैश किया जा सकने वाला होना चाहिए).

symmetric_difference

set set.symmetric_difference(other)

यह फ़ंक्शन, हैश किए जा सकने वाले एलिमेंट के दूसरे कलेक्शन के साथ इस सेट के सिमेट्रिक अंतर वाला एक नया सेट दिखाता है.

अगर s और t सेट हैं, तो s.symmetric_difference(t), s ^ t के बराबर है. हालांकि, ध्यान दें कि ^ ऑपरेशन के लिए, दोनों साइड सेट होने चाहिए. वहीं, symmetric_difference तरीके में सीक्वेंस या डिक्शनरी भी स्वीकार की जाती है.

उदाहरण के लिए,

set([1, 2]).symmetric_difference([2, 3])  # set([1, 3])

पैरामीटर

पैरामीटर ब्यौरा
other ज़रूरी है
हैश किए जा सकने वाले एलिमेंट का कलेक्शन.

symmetric_difference_update

None set.symmetric_difference_update(other)

यह फ़ंक्शन, हैश किए जा सकने वाले एलिमेंट के दूसरे कलेक्शन के साथ इस सेट के सिमेट्रिक अंतर वाला एक नया सेट दिखाता है.

अगर s और t सेट हैं, तो s.symmetric_difference_update(t), `s ^= t; however, note that the ^=` के बराबर है. असाइनमेंट बढ़ाने के लिए, दोनों साइड को सेट होना ज़रूरी है. वहीं, symmetric_difference_update तरीके में सीक्वेंस या डिक्शनरी भी स्वीकार की जाती है.

उदाहरण के लिए,

s = set([1, 2])
s.symmetric_difference_update([2, 3])  # None; s == set([1, 3])

पैरामीटर

पैरामीटर ब्यौरा
other ज़रूरी है
हैश किए जा सकने वाले एलिमेंट का कलेक्शन.

Union

set set.union(*others)

यह फ़ंक्शन, एक नया सेट दिखाता है. इसमें इस सेट के साथ-साथ अन्य सेट के आइटम भी शामिल होते हैं.

अगर s और t सेट हैं, तो s.union(t), s | t के बराबर है. हालांकि, ध्यान दें कि | ऑपरेशन के लिए, दोनों तरफ़ सेट होने चाहिए. वहीं, union तरीके में सीक्वेंस और डिक्शनरी भी स्वीकार की जाती हैं.

union को बिना किसी तर्क के कॉल किया जा सकता है. इससे सेट की कॉपी मिलती है.

उदाहरण के लिए,

set([1, 2]).union([2, 3])                    # set([1, 2, 3])
set([1, 2]).union([2, 3], {3: "a", 4: "b"})  # set([1, 2, 3, 4])

पैरामीटर

पैरामीटर ब्यौरा
others ज़रूरी है
हैश किए जा सकने वाले एलिमेंट के कलेक्शन.

अपडेट करें

None set.update(*others)

इस सेट में, दूसरों में मौजूद एलिमेंट जोड़ता है.

उदाहरण के लिए,

s = set()
s.update([1, 2])          # None; s is set([1, 2])
s.update([2, 3], [3, 4])  # None; s is set([1, 2, 3, 4])

अगर s और t सेट हैं, तो s.update(t), s |= t के बराबर है. हालांकि, ध्यान दें कि |= ऑगमेंटेड असाइनमेंट के लिए, दोनों साइड के सेट होने ज़रूरी हैं. वहीं, update तरीके में सीक्वेंस और डिक्शनरी भी स्वीकार की जाती हैं.

update को बिना किसी तर्क के कॉल किया जा सकता है. इससे सेट में कोई बदलाव नहीं होता.

पैरामीटर

पैरामीटर ब्यौरा
others ज़रूरी है
हैश किए जा सकने वाले एलिमेंट के कलेक्शन.