🎯
Data Structures

Sets

Unique, Unordered Collections
💡 Set ek guest list jaisa hai jaha koi naam do baar nahi likha ja sakta — automatically duplicates reject ho jaate hain, aur order matter nahi karta (kaun pehle likha gaya).

Set () se nahi, {} ya set() se banta hai — sirf UNIQUE values rakhta hai, duplicates automatically ignore hote hain. Order guaranteed nahi hai (list/tuple ke ulat). Membership check (x in set) bahut fast hai (O(1) average), list se (O(n)) kaafi behtar.

Sets mathematical set operations support karte hain: union (|), intersection (&), difference (-) — ye bahut useful hote hain jab do collections compare karne hon (jaise common elements dhundna).

fruits = {"apple", "banana", "apple", "cherry"}   # duplicate 'apple' ignore hoga
print(fruits)                                          # {'apple', 'banana', 'cherry'} — order guaranteed nahi

a = {1, 2, 3}
b = {2, 3, 4}

print(a | b)   # {1, 2, 3, 4} — union
print(a & b)   # {2, 3} — intersection (common)
print(a - b)   # {1} — difference (a mein hai, b mein nahi)

print(3 in a)   # True — bahut fast check
🎯
Set ek guest list jaisa hai jaha koi naam do baar nahi likha ja sakta — automatically duplicates reject ho jaate hain, aur order matter nahi karta (kaun pehle likha gaya).
1 / 2
⚡ झट से Recap
  • {}/set() se banta hai, sirf unique values
  • |, &, - = union, intersection, difference
  • Membership check (in) bahut fast — O(1) average
इस page में (2 subtopics)

frozenset() ek immutable version hai set ka — jaise tuple, list ka immutable version hai. Isse dictionary key ya doosre set ke element ke roop mein use kar sakte ho (normal set nahi kar sakta, kyunki mutable hai).

normal_set = {1, 2, 3}
frozen = frozenset([1, 2, 3])

# normal_set ko dict key nahi bana sakte (mutable, unhashable)
d = {frozen: "immutable set as key"}   # ye valid hai
print(d[frozen])
💡Tip: frozenset rare use-case hai — zyadatar time normal set kaafi hota hai. Sirf tab zaroorat padti hai jab set ko khud kisi doosri collection (set of sets, dict key) mein use karna ho.

List comprehensions jaisa hi syntax, sets ke liye — {} ke saath, automatically duplicates handle ho jaate hain.

numbers = [1, 2, 2, 3, 3, 3, 4]
unique_squares = {x ** 2 for x in numbers}
print(unique_squares)   # {1, 4, 9, 16} — duplicates automatically gone
💡Tip: Set comprehension use karo jab tumhe unique results chahiye ho aur order matter nahi karta — list comprehension se marginally different use-case.