मंगलवार, 2 जनवरी 2018

Learn Python in Marathi - Sets

आज आपण पायथॉन मध्ये सेट काय असतो हे पाहू. जेव्हा आपण म्हणतो की माझ्या जवळ कलर्सचा एक सेट आहे,  तेव्हा आपण असे गृहीत धरतो की माझ्याजवळ प्रत्येक रंगाचा एक एक नग आहे. सेटचा हाच अर्थ पायथॉन मध्ये लागू होतो. 

पायथॉनचा सेट ही एक अशी यादी आहे ज्यातील प्रत्येक एलिमेंट हा वेगळा वेगळा आहे.

तुम्ही गणितात सेट शिकला असाल तर त्यामध्ये ज्या प्रकारचे ऑपरेशन्स केले जातात ते सर्व आपण पायथॉनच्या सेट सोबत करू शकतो.  जसे Union, Intersection, Difference


आपण या आधी स्ट्रिंग, लिस्ट, टुपल अणि डिक्शनरी शिकलो. लिस्ट मध्ये [ ] स्क्वेअर ब्रॅकेट्सचा वापर होतो,  टुपल मधे ( ) साधे ब्रॅकेट्स वापरले जातात अणि डिक्शनरी साठी { } कर्ली ब्रॅकेट्स वापरले जातात.

सेट आपण दोन पद्धतीने बनवू शकतो.

Set1 = {'one','two','three'}

Set2 = set(['one','two','three'])

कर्ली ब्रॅकेट्स वापरून सेट्स बनवणे सोपे आणि बहुतांशी हीच पद्धत वापरली जाते. या सेट्सला म्यूटेबल सेट्स म्हणतात, यामधे आपण नवीन एलिमेंट जोडू शकतो, आणि असलेला एलिमेंट काढून टाकू शकतो. याउलट जेव्हा आपल्याला लिस्ट मध्ये बदल नको असेल तर आपण frozenset बनवू शकतो याचे सिंट्याक्स खालील प्रमाने आहे
Set3 = frozenset(['one','two','three'])


आपण फळांची नावे लिहिण्यासाठी एक सेट बनवू
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 चा सब सेट आहे किंवा नाही हे तपासले जाते. आणि  सब सेट आढळून आल्यास True किंवा नसल्यास False असे उत्तर आपल्याला मिळते

 या ठिकाणी  "Cashews" आणि  "Almonds" ही दोन नावे  dry_fruits मध्ये आहेत पण fruits मध्ये नाहीत म्हणून आपल्याला False हे उत्तर मिळते

आता आपण  citrus_fruits या सेटशी तुलना करून पाहू 

citrus_fruits.issubset(fruits)

या ठिकाणी  citrus_fruits मधील सर्व नावे  fruits मध्ये पण दिसून येतात म्हणून आपल्याला   True हे उत्तर मिळते

आपण लिस्ट तयार झाल्यानंतर देखील त्यात नवीन नाव जोडू शकतो

fruits.add("Guava")

हा कमांड वापरल्यास  "Guava" हे नाव  फ्रूट्स मध्ये जोडले जाईल

Another set operation is difference, we can find out the unique elements in a list that are not present in the other list, we can do this operation with more than two sets

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 ची नावे काढून टाकेल.

We can use the Union operator on sets too, it is non destructive operation, does not make any changes to the sets themselves

आपण दोन सेट्स ला जोडून पाहण्यासाठी  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}

आपण येथे frozenset([ ]) चे एक उदाहरण पाहू

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

या सेट मध्ये आपण कोणतेही नवीन नाव जोडू किंवा असलेले नाव काढून टाकू शकत नाही

weekdays.remove("Monday")

हे कमांड वापरल्यास असे एरर दिसेल
AttributeError: 'frozenset' object has no attribute 'remove'