सेट करो

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

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 या -= ऑगमेंटेड असाइनमेंट ऑपरेशन देखें.

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

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 ज़रूरी है
सेट, हैश किए जा सकने वाले एलिमेंट के क्रम या डिक्शनरी.