गुरुवार, 3 मई 2018

Learn Python in Hindi - Sets

आज हम पायथॉन में सेट क्या होता है ये देखेंगे. जब हम ये कहते हैं की मेरे पास कलर्स का एक सेट है, तो मेरा  कहना ये होता है मेरे पास सभी कलर्स का एक एक आइटम है. सेट का यही मतलब पायथॉन में भी लिया जाता है. एक सेट अलग अलग आइटम की लिस्ट होती है.

आपने गणित में सेट्स पढ़े होंगे तो उसमें सेट्स के साथ जिस प्रकार के ऑपरेशन्स किये जाते हैं वही सब पायथॉन में भी किये जाते हैं.  जैसे Union, Intersection, Difference


हमने लिस्ट्स सिखा, टुपल सिखा और डिक्शनरी सीखी.  लिस्ट्स बनाते समय हम [ ] का इस्तेमाल करते हैं, टुपल बनाते समय हम ( ) का इस्तेमाल करते हैं और  डिक्शनरी के लिए हम { } का इस्तेमाल करते हैं.

सेट बनाने के  लिये  set([ ]) इस नोटेशन का इस्तेमाल होता है. नार्मल ब्रॅकेट के भीतर स्क्वेअर ब्रॅकेट. इसे { } इस तरह के ब्रॅकेट में भी लिखा जाता है.

सेट बनाते समय अगर आपने गलती से एक ही नाम को कई बार लिखा भी तो भी उसे अपने आप हटा दिया जाता  है.

हम फलों के नामों का एक सेट बनाते हैं
fruits = {"Apples","Bananas","Lemons","Pineapples","Watermelons","Grapes","Pears","Dates","Pomegranates"}

यहाँ मैंने नाम लिखने के लिए " " डबल क्वोट्स का इस्तेमाल किया है, आप चाहो तो इसे ' ' सिंगल क्वोट्स में भी लिख सकते हो.

अब हम ड्राई फ्रूट्स के नामों का एक सेट बनाते हैं

dry_fruits = {"Almonds","Cashews","Dates"}

और खट्टे फलों के नामों का एक

citrus_fruits = {"Lemons","Pineapples"}

गणित के सेट में सब सेट और सुपर सेट होता है.  वही यहाँ पर भी लागु होता है.

हम एक सेट दुसरे का सब सेट हैं या नहीं ये जांचने के लिए  issubset() फंक्शन का इस्तेमाल कर सकते हैं

dry_fruits.issubset(fruits)

ये कमांड जाँच करेगी कि, dry_fruits ये सेट  fruits सेट का सब सेट है या नहीं

यहाँ पर dry_fruits में "Cashews" और  "Almonds" ये दो नाम हैं जो हमने fruits लिस्ट में नहीं लिखे हैं.  इसलिए  dry_fruits ये सेट हमारे fruits सेट  का सब सेट नहीं होगा, इसलिए हमें False आउटपुट मिलेगा

अब हम ये citrus_fruits के साथ चेक करते हैं.

citrus_fruits.issubset(fruits)

यहां पर citrus_fruits के सभी नाम fruits में भी मौजूद हैं इसलिए हमें  Trueआउटपुट मिलेगा.

We can add things to a list after it has been created.

हम लिस्ट बन जाने के बाद भी उसमें नए नाम जोड़ सकते हैं

fruits.add("Guava")

इस कमांड से "Guava" नाम फ्रूट्स सेट में जुड़ जाएगा

difference इस फंक्शन से हम दो सेट्स के बीच का फर्क जान सकते हैं.

dry_fruits.difference(fruits)
{'Almonds', 'Cashews'}

fruits.difference(dry_fruits)
{'Apples', 'Pears', 'Bananas', 'Watermelons', 'Pomegranates', 'Grapes', 'Pineapples', 'Lemons'}

fruits.difference(dry_fruits).difference(citrus_fruits)

हम एक से ज्यादा सेट्स भी इसमें इस्तेमाल कर सकते हैं.  difference फंक्शन सीरत दो सेट्स के भीतर के फर्क को बताएगा लेकिन वो किसी सेट में चेंज नहीं करेगा. लेकिन एक ऐसा फंक्शन है जो पहले सेट में से वो सभी एलिमेंट्स निकाल देगा जो दुसरे सेट में हैं difference_update

fruits.difference_update(dry_fruits)

ये कमांड fruits सेट में से dry_fruits के नाम निकाल देगा

हम दो सेट्स को जोड़ कर देखने के लिए union फंक्शन का इस्तेमाल कर सकते हैं. ये फंक्शन सिर्फ डिस्प्ले करेगा. सेट्स में कोई चेंज नहीं करेगा

fruits.union(dry_fruits)
or
fruits | dry_fruits

इसी तरह intersection नाम का एक फंक्शन है जो दो सेट्स के अन्दर जो कॉमन एलिमेंट्स हैं सिर्फ उनको दिखाएगा

x = {5, 3, 4, 2, 6}
y = {5, 1, 11, 9, 2}

x.intersection(y) ये कमांड ऐसा रिझल्ट देगा
{2, 5}


हमने सेट्स बनाने के लिए { } का इस्तेमाल किया है. लेकिन सेट्स को डिफाइन करने के लिए set([ ]) इसका भी इस्तेमाल किया जाता है जैसे

weekdays = set(["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"])

इस तरह का नोटेशन तब काम आता है जब हमें ऐसा सेट बनाना है जिसमें हमें फिर कोई चेंज नहीं करना है. यानि हमें अपने सेट को राईट प्रोटेक्ट करना है ताकि उसे गलती से एडिट ना किया जा सके. इसके लिए  frozenset([ ]) का इस्तेमाल किया जाता है

weekdays = frozenset(["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"])

अब अगर आप इस सेट में कुछ जोड़ना चाहें या कोई एलिमेंट डिलीट करना चाहें तो नहीं कर पाएंगे.

weekdays.remove("Monday")

यहाँ हमें ऐसा एरर दिखेगा

AttributeError: 'frozenset' object has no attribute 'remove'


आगे पढ़िए 

Learn Python in Hindi - User input