1. Learning Outcomes#
या chapter नंतर तुम्हाला:
- Python मधील
setम्हणजे काय ते समजेल setची गरज का पडते ते समजेलsetकसा तयार करायचा ते समजेल- duplicate values सोबत
setकाय करतो ते समजेल unordered collectionम्हणजे नेमके काय ते समजेलsetmutable का आहे ते समजेलfrozensetम्हणजे काय ते समजेलfrozensetकसा तयार करायचा ते समजेलsetआणिfrozensetमधील मुख्य फरक समजेल- practical situation मध्ये योग्य type कसा निवडायचा ते समजेल
- beginners कडून होणाऱ्या common mistakes ओळखता येतील
2. एका छोट्या Problem पासून सुरुवात करूया#
समजा एका training portal वर students ने निवडलेल्या skills आपल्याकडे अशा आहेत:
skills = ["Python", "SQL", "Python", "Java", "SQL"]इथे Python दोन वेळा आहे.
SQL सुद्धा दोन वेळा आहे.
पण आपल्याला प्रश्न आहे:
एकूण वेगवेगळ्या skills किती आहेत?
आपल्याला duplicate entries नको आहेत.
आपल्याला फक्त:
- Python
- SQL
- Java
या unique values हव्या आहेत.
अशा situation मध्ये Python मधील set खूप उपयोगी पडतो.
3. set म्हणजे काय?#
सोप्या भाषेत:
set म्हणजे unique elements ठेवणारी collection.
एका set मध्ये समान value पुन्हा पुन्हा दिली तरी ती स्वतंत्र duplicate element म्हणून ठेवली जात नाही.
उदाहरण:
numbers = {10, 20, 10, 30, 20}
print(numbers)Possible output:
{10, 20, 30}आपण पाच values लिहिल्या होत्या.
पण unique values फक्त तीन होत्या:
102030
म्हणून set मध्ये प्रत्येक unique value एकदाच राहिली.
set चा मुख्य विचार असा आहे: duplicate values काढून unique elements ठेवणे.
Trainer: "10 मी तीन वेळा दिला तर?"
Python: "तुम्ही कितीही आग्रह केला तरी माझ्या set मध्ये त्या 10 साठी एकच खुर्ची आहे."
Duplicate values बाबतीत "अति तिथे माती" हे इथे अगदी लक्षात ठेवण्यासारखे आहे.
4. Definition#
A set is an unordered, mutable collection of unique elements in Python.
set ही Python मधील अशी collection आहे ज्यामध्ये duplicate elements ठेवले जात नाहीत. तिच्यातील values नंतर बदलता येतात, पण त्यांच्या position वर आपण अवलंबून राहू शकत नाही.
या definition मधील तीन शब्द महत्त्वाचे आहेत:
- unique
- unordered
- mutable
आता ते एकेक करून समजून घेऊया.
5. Set कसा तयार करायचा?#
Curly Braces वापरून Set तयार करणे#
Values { } मध्ये comma ने वेगळ्या लिहून set तयार करता येतो.
languages = {"Python", "Java", "SQL"}
print(languages)Possible output:
{'Python', 'Java', 'SQL'}इथे languages हा set आहे.
आपण type तपासू शकतो:
languages = {"Python", "Java", "SQL"}
print(type(languages))Expected Output#
<class 'set'>याचा अर्थ Python ने ही value set म्हणून तयार केली आहे.
set() वापरून Set तयार करणे#
Python मध्ये set() function वापरूनही set तयार करता येतो.
numbers = set([10, 20, 30])
print(numbers)Possible output:
{10, 20, 30}इथे आपण आधी एक list दिली.
set() ने त्या values पासून नवीन set तयार केला.
हा pattern विशेषतः duplicate values काढण्यासाठी उपयोगी पडतो.
numbers = [10, 10, 20, 30, 20]
unique_numbers = set(numbers)
print(unique_numbers)Possible output:
{10, 20, 30}Flow असा समजा:
Rendering diagram…
Diagram could not be rendered.
सुरुवातीला duplicate values असलेली collection आहे.
ती set() कडे दिली.
set() ने प्रत्येक unique value ठेवली.
Repeated values मुळे additional duplicate elements तयार झाले नाहीत.
6. Empty Set तयार करताना होणारी महत्त्वाची चूक#
नवीन learner सहज असा विचार करू शकतो:
"{10, 20} हा set आहे, मग {} म्हणजे empty set असणार."
पण Python मध्ये तसे नाही.
हे पाहा:
data = {}
print(type(data))Output:
<class 'dict'>{} वापरल्यावर empty set तयार होत नाही.
Empty set तयार करण्यासाठी:
data = set()
print(type(data))Output:
<class 'set'>Empty set तयार करण्यासाठी {} वापरू नका. set() वापरा.
हे interview मध्येही विचारले जाऊ शकते.
7. Unique Elements म्हणजे काय?#
unique म्हणजे repeated नसलेली स्वतंत्र value.
उदाहरण:
10, 20, 10, 30, 20इथे:
10 repeated आहे.
20 repeated आहे.
पण unique values आहेत:
10, 20, 30Set तयार केल्यावर duplicate values स्वतंत्र elements म्हणून राहत नाहीत.
values = [10, 20, 10, 30, 20]
unique_values = set(values)
print(len(unique_values))Expected Output#
3आपण original list मध्ये पाच items दिल्या.
पण set मध्ये फक्त तीन unique values राहिल्या.
म्हणून len(unique_values) ने 3 दिले.
set duplicate values "मोजत" नाही. समान value ची एकच unique entry ठेवतो.
Practical Example — Unique Student Cities#
समजा registration data मधून cities मिळाल्या:
cities = ["Pune", "Mumbai", "Pune", "Nashik", "Mumbai"]
unique_cities = set(cities)
print(len(unique_cities))Output:
3Unique cities आहेत:
- Pune
- Mumbai
- Nashik
अशा प्रकारे repeated data मधून unique values मिळवण्यासाठी set उपयोगी ठरतो.
8. Unordered Collection म्हणजे काय?#
हा मुद्दा नीट समजणे खूप महत्त्वाचे आहे.
set ही unordered collection आहे.
याचा अर्थ:
set मधील elements साठी list सारखी निश्चित positional order guarantee केलेली नसते.
उदाहरण:
languages = {"Python", "Java", "SQL"}
print(languages)एका run मध्ये तुम्हाला असे दिसू शकते:
{'Java', 'SQL', 'Python'}किंवा display order वेगळी दिसू शकते.
म्हणून:
"मी आधी Python लिहिले होते, त्यामुळे ते नेहमी पहिल्याच position वर मिळेल"
असा विचार करायचा नाही.
unordered म्हणजे values अस्ताव्यस्त किंवा चुकीच्या आहेत असा अर्थ नाही. त्याचा अर्थ असा की code ने set मधील specific positional order वर अवलंबून राहू नये.
Set मध्ये Index वापरता येतो का?#
List मध्ये आपण असे करू शकतो:
names = ["Amit", "Neha", "Rahul"]
print(names[0])पण set मध्ये:
names = {"Amit", "Neha", "Rahul"}
print(names[0])हे valid नाही.
कारण set positional indexing देत नाही.
या code मुळे error येतो.
यातून मुख्य गोष्ट लक्षात ठेवा:
जर तुमच्या logic ला "पहिला", "दुसरा", "तिसरा" element महत्त्वाचा असेल, तर set च्या unordered nature कडे लक्ष द्या.
Trainer: "Set मधला पहिला student कोण?"
Set: "पहिला कोण? मी attendance line नाही."
ही छोटी गंमत लक्षात ठेवली तर unordered concept विसरणे कठीण जाईल.
9. Set Mutable आहे#
mutable म्हणजे object तयार झाल्यानंतर त्याच्या content मध्ये बदल करता येतो.
Python मधील normal set mutable आहे.
आपण त्यात नवीन element add करू शकतो.
skills = {"Python", "SQL"}
skills.add("Java")
print(skills)Possible output:
{'Python', 'SQL', 'Java'}आपण सुरुवातीला दोन skills ठेवल्या होत्या.
नंतर:
skills.add("Java")यामुळे existing set मध्ये Java add झाले.
Element Remove करणे#
skills = {"Python", "SQL", "Java"}
skills.remove("SQL")
print(skills)Possible output:
{'Python', 'Java'}Set तयार झाल्यानंतर त्यातील content बदलला.
म्हणून set mutable आहे.
set मध्ये unique values असतात आणि set तयार झाल्यानंतर elements add किंवा remove करता येतात.
Duplicate Element Add केला तर?#
skills = {"Python", "SQL"}
skills.add("Python")
print(len(skills))Output:
2Python आधीच set मध्ये होता.
पुन्हा Python add केल्याने दुसरा duplicate Python तयार झाला नाही.
Set चे unique-element behavior कायम राहते.
10. मग frozenset ची गरज काय?#
आता एक वेगळी situation पाहू.
समजा application मध्ये काही permissions आहेत:
read
writeया permissions ची collection unique हवी आहे.
पण एकदा तयार झाल्यावर ती accidentally बदलली जाऊ नये अशी requirement आहे.
Normal set वापरला तर:
permissions = {"read", "write"}
permissions.add("delete")Set mutable असल्यामुळे delete add होऊ शकते.
पण काही situations मध्ये आपल्याला collection "lock" करायची असते.
म्हणजे:
- unique values हव्यात
- पण collection नंतर बदलता कामा नये
इथे frozenset उपयोगी पडतो.
11. frozenset म्हणजे काय?#
frozenset हे set सारखेच unique elements ठेवते.
पण त्याचा मुख्य फरक असा आहे:
frozenset immutable आहे.
एकदा frozenset तयार झाला की त्यामध्ये element add किंवा remove करता येत नाही.
नावामध्येच clue आहे:
frozen म्हणजे गोठलेला किंवा fixed झालेला असा mental model ठेवू शकता.
पण technical अर्थ असा:
collection तयार झाल्यानंतर तिच्या elements मध्ये mutation करता येत नाही.
12. Definition#
A frozenset is an immutable, unordered collection of unique elements in Python.
frozenset ही unique values ठेवणारी collection आहे. ती unordered असते आणि एकदा तयार झाल्यानंतर तिचे elements add किंवा remove करता येत नाहीत.
13. Frozenset कसा तयार करायचा?#
frozenset() वापरून frozenset तयार केला जातो.
permissions = frozenset(["read", "write"])
print(permissions)Possible output:
frozenset({'read', 'write'})Type तपासूया:
permissions = frozenset(["read", "write"])
print(type(permissions))Output:
<class 'frozenset'>Python ने object frozenset type चा तयार केला.
14. Frozenset मध्येही Duplicate Values राहतात का?#
नाही.
frozenset सुद्धा unique elements ठेवतो.
numbers = frozenset([10, 10, 20, 20, 30])
print(len(numbers))Output:
3Unique values:
10, 20, 30याचा अर्थ duplicate-removal behavior बाबतीत set आणि frozenset समान आहेत.
मुख्य फरक mutability मध्ये आहे.
15. Frozenset Immutable आहे#
हे समजण्यासाठी intentionally incorrect example पाहूया.
permissions = frozenset(["read", "write"])
permissions.add("delete")हा code error देतो.
कारण frozenset मध्ये add() सारखी modifying method उपलब्ध नसते.
Typical error:
AttributeError: 'frozenset' object has no attribute 'add'Python आपल्याला basically सांगत आहे:
"तुम्ही frozen collection बदलण्याचा प्रयत्न करत आहात."
Trainer: "एक छोटा delete add करू?"
Frozenset: "नाही. दुकान बंद झालंय."
frozenset च्या बाबतीत "शब्द दिला तो पाळला" असा mental model ठेवू शकता — तयार झाल्यानंतर collection बदलणार नाही.
16. Set आणि Frozenset मधील मुख्य फरक#
| Feature | set |
frozenset |
|---|---|---|
| Unique elements | Yes | Yes |
| Unordered | Yes | Yes |
| Mutable | Yes | No |
| Element add करता येतो | Yes | No |
| Element remove करता येतो | Yes | No |
| Creation | {...} किंवा set() |
frozenset() |
दोन्हीमध्ये unique elements असतात.
दोन्ही unordered आहेत.
पण:
set बदलता येतो.
frozenset बदलता येत नाही.
हा सर्वात महत्त्वाचा फरक आहे.
17. कोणता Type निवडायचा?#
साधा decision असा विचारू शकता:
Collection तयार झाल्यानंतर बदल आवश्यक आहेत का?
Rendering diagram…
Diagram could not be rendered.
Flow सुरुवात unique values च्या requirement पासून होते.
नंतर एक प्रश्न विचारतो:
collection modify करावी लागेल का?
जर हो:
set योग्य आहे.
जर नाही आणि values fixed ठेवायच्या असतील:
frozenset उपयोगी आहे.
Unique values हा दोघांचा common गुण आहे. Mutable की immutable हा निवड करताना मुख्य फरक आहे.
18. Practical Example — Editable Skills#
समजा user profile मधील skills बदलत राहू शकतात.
आज:
Python
SQLउद्या learner Java शिकला.
मग Java add करायचा आहे.
अशा situation मध्ये set योग्य आहे.
skills = {"Python", "SQL"}
skills.add("Java")
print(len(skills))Output:
3Collection बदलण्याची आवश्यकता असल्यामुळे normal set practical आहे.
19. Practical Example — Fixed Permissions#
समजा काही predefined permissions runtime दरम्यान बदलू नयेत.
permissions = frozenset(["read", "write"])या collection मध्ये duplicate values राहणार नाहीत.
आणि collection accidentally modifyही करता येणार नाही.
इथे frozenset वापरण्याचा intent स्पष्ट आहे:
ही unique collection fixed आहे.
20. Set तयार करताना आणखी एक महत्त्वाची गोष्ट#
Set च्या elements साठी Python ला त्या values स्थिरपणे identify करता आल्या पाहिजेत.
सोप्या beginner-level भाषेत सांगायचे तर:
सर्व प्रकारच्या mutable collections थेट set element म्हणून वापरता येत नाहीत.
उदाहरणार्थ हा code valid नाही:
data = {[1, 2], [3, 4]}इथे list ला set element म्हणून वापरण्याचा प्रयत्न केला आहे.
Python error देतो.
आत्ता एवढे लक्षात ठेवा:
- integers set मध्ये ठेवू शकतो
- strings set मध्ये ठेवू शकतो
- अनेक immutable values set मध्ये ठेवू शकतो
- list सारखी mutable collection थेट set element म्हणून वापरता येत नाही
या chapter साठी मुख्य focus unique, unordered आणि mutable/immutable behavior वर आहे.
21. Common Beginner Mistakes#
Mistake 1: {} म्हणजे Empty Set समजणे#
Wrong:
data = {}हे empty set नाही.
Correct:
data = set()Mistake 2: Set ची Order Fixed समजणे#
languages = {"Python", "Java", "SQL"}Display मध्ये एखादी order दिसली म्हणून त्या order वर program logic लिहू नका.
Set unordered आहे.
Mistake 3: Set मध्ये Duplicate Values राहतील असे समजणे#
numbers = {10, 10, 10}या set मध्ये तीन independent 10 values नसतात.
Unique value एकच आहे.
print(len(numbers))Output:
1Mistake 4: Frozenset Modify करण्याचा प्रयत्न करणे#
data = frozenset([10, 20])
data.add(30)हा code error देईल.
frozenset immutable आहे.
Mistake 5: Unordered म्हणजे Random असे समजणे#
unordered याचा अर्थ "Python मुद्दाम values random करतो" असा नाही.
योग्य understanding अशी:
Set मध्ये positional order ची guarantee नाही आणि आपण त्या order वर rely करू नये.
22. Set आणि Frozenset समजण्यासाठी एक Mental Model#
एका club ची membership list समजा.
Rule:
एका व्यक्तीचे नाव एकदाच हवे.
Duplicate membership नको.
जर members येत-जात असतील:
set
जर final approved membership list lock केली असेल:
frozenset
यातून दोन प्रश्न लक्षात ठेवा:
- Values unique हव्यात का?
- Collection नंतर बदलायची आहे का?
यांची उत्तरे type निवडणे सोपे करतात.
23. Quick Concept Check#
समजा:
data = set([5, 5, 10, 15, 10])Unique values किती?
उत्तर:Show Answer
3
कारण:
5
10
15इतक्याच distinct values आहेत.
आता:
data = frozenset([5, 10, 15])यामध्ये 20 add करता येईल का?
नाही.
कारण frozenset immutable आहे.
24. Interview Preparation#
What is a set in Python?Show Answer
A set is an unordered and mutable collection of unique elements. Duplicate values are not stored as separate elements, and the collection can be modified after creation.
Key Points:
- Stores unique elements
- Unordered collection
- Mutable
- Does not support positional indexing
Why interviewer asks this:
Interviewer wants to check whether you understand the basic characteristics of Python collections and can distinguish a set from ordered collection types.
What is the difference between set and frozenset in Python?Show Answer
Both set and frozenset store unique unordered elements. The main difference is mutability. A set is mutable and can be modified after creation, while a frozenset is immutable and cannot be modified after creation.
Key Points:
- Both store unique elements
- Both are unordered
setis mutablefrozensetis immutable
Why interviewer asks this:
The interviewer wants to verify whether you understand when a modifiable collection should be used and when an immutable collection is more appropriate.
How do you create an empty set in Python?Show Answer
An empty set is created using set().
data = set()Empty curly braces {} do not create a set.
Key Points:
- Use
set() {}is not an empty set
Why interviewer asks this:
It is a common beginner mistake and tests whether you know Python's collection syntax correctly.
Does a Python set maintain insertion order for positional access?Show Answer
A set should be treated as an unordered collection. Its elements do not have reliable positional indexes, so code should not depend on a particular element order.
Key Points:
- No positional indexing
- Do not rely on display order
- Set should be treated as unordered
Why interviewer asks this:
The interviewer wants to ensure that you do not write logic that incorrectly depends on set ordering.
25. Hands-On Practice#
Practice 1#
Requirement
खालील repeated numbers मधून unique values तयार करा.
numbers = [10, 20, 10, 30, 20, 40]Your Task
set() वापरून unique numbers तयार करा आणि unique elements ची count print करा.
HintShow Hint
List set() ला द्या.
SolutionShow Solution
numbers = [10, 20, 10, 30, 20, 40]
unique_numbers = set(numbers)
print(len(unique_numbers))Expected Output
4Explanation
Unique values आहेत:
10, 20, 30, 40म्हणून count 4 आहे.
Practice 2#
Requirement
खालील skills साठी mutable unique collection तयार करा:
Python
SQL
Javaनंतर Git add करा.
Your Task
योग्य Python type वापरा.
HintShow Hint
Collection नंतर बदलायची आहे.
SolutionShow Solution
skills = {"Python", "SQL", "Java"}
skills.add("Git")
print(len(skills))Expected Output
4Explanation
आपल्याला collection मध्ये नवीन skill add करायची होती.
म्हणून mutable set योग्य आहे.
Practice 3#
Requirement
खालील permissions ची immutable unique collection तयार करा:
read
write
executeYour Task
योग्य Python type वापरा.
HintShow Hint
Collection तयार झाल्यानंतर modify होता कामा नये.
SolutionShow Solution
permissions = frozenset(["read", "write", "execute"])
print(type(permissions))Expected Output
<class 'frozenset'>Explanation
Unique values हव्या आहेत आणि collection fixed ठेवायची आहे.
म्हणून frozenset योग्य आहे.
Practice 4#
Requirement
खालील code पाहा:
languages = {"Python", "Java", "SQL"}कोणी असा code लिहिला:
print(languages[0])Your Task
हा code का चुकीचा आहे ते explain करा.
HintShow Hint
Set च्या positional order बद्दल विचार करा.
SolutionShow Solution
set unordered collection आहे.
त्यातील elements साठी list सारखी positional indexing उपलब्ध नसते.
म्हणून languages[0] वापरता येत नाही.
Explanation
Set वापरताना specific index वर कोणती value आहे यावर program logic अवलंबून ठेवायचा नाही.
26. Final Challenge#
Scenario
एका learning platform वर students ने निवडलेल्या technologies अशा आहेत:
selected = [
"Python",
"SQL",
"Python",
"Java",
"SQL",
"Git"
]आपल्याला:
- duplicate technologies काढायच्या आहेत
- unique technologies ची count काढायची आहे
- त्या unique technologies ची fixed version तयार करायची आहे
Requirements
selectedपासून mutable set तयार करा.- Unique technologies ची count print करा.
- त्याच values पासून
frozensetतयार करा. - दोन्ही objects चे type print करा.
Your Task
Complete Python code लिहा.
Hint 1Show Hint 1
पहिल्या step मध्ये set(selected) वापरू शकता.
Hint 2Show Hint 2
Fixed collection साठी frozenset() वापरा.
SolutionShow Solution
selected = [
"Python",
"SQL",
"Python",
"Java",
"SQL",
"Git"
]
unique_technologies = set(selected)
fixed_technologies = frozenset(unique_technologies)
print(len(unique_technologies))
print(type(unique_technologies).__name__)
print(type(fixed_technologies).__name__)Expected Output
4
set
frozensetExplanation
Original data मध्ये काही technologies repeated होत्या.
set(selected) ने duplicate values काढून unique technologies ठेवल्या.
Unique technologies चार आहेत:
- Python
- SQL
- Java
- Git
म्हणून पहिला output 4 आहे.
unique_technologies normal mutable set असल्यामुळे त्याचा type set आहे.
त्यापासून तयार केलेली fixed collection frozenset type ची आहे.
27. या Chapter मधून काय लक्षात ठेवायचे?#
setunique elements ठेवतो.- Duplicate equal values स्वतंत्र entries म्हणून राहत नाहीत.
- Set तयार करण्यासाठी
{value1, value2}किंवाset()वापरता येते. - Empty set साठी
set()वापरावे. {}म्हणजे empty set नाही.setunordered collection आहे.- Set मध्ये positional indexing वर rely करता येत नाही.
- Normal
setmutable आहे. - Set मध्ये elements add किंवा remove करता येतात.
frozensetसुद्धा unique elements ठेवतो.frozensetunordered आहे.frozensetimmutable आहे.- Collection बदलायची असल्यास
setउपयोगी आहे. - Collection fixed ठेवायची असल्यास
frozensetउपयोगी आहे.
एका sentence मध्ये मुख्य फरक सांगायचा असेल तर: A set is mutable, whereas a frozenset is immutable; both contain unique unordered elements.