📌
Data Structures

Tuples

Immutable Ordered Collections
💡 Tuple ek sealed envelope jaisa hai — ek baar seal karne ke baad (bana lene ke baad), andar ka content badal nahi sakte. List ek khula box hai (modify kar sakte ho), tuple sealed hai (immutable) — coordinates jaise "fixed" data ke liye perfect.

Tuple lists jaisi hi hai (ordered, indexed collection), lekin () se banti hai aur IMMUTABLE hai — ek baar banane ke baad elements add/remove/modify nahi kar sakte. Isse tuple thoda faster hai lists se, aur "ye data change nahi hoga" ka guarantee deta hai.

Common use-case: function se multiple values return karna (jaise pehle dekha), coordinates (x, y), ya kisi bhi data jo logically "fixed" hai — jaise ek din ke saal ke months.

point = (3, 4)
print(point[0])   # 3
# point[0] = 10   # ERROR: tuples immutable hain

name, age = ("Aarav", 20)   # tuple unpacking

colors = ("red", "green", "blue")
print(len(colors))   # 3

single = (5,)   # single-element tuple — comma ZAROORI hai!
not_tuple = (5)  # ye sirf int 5 hai, tuple nahi!
📌
Tuple ek sealed envelope jaisa hai — ek baar seal karne ke baad (bana lene ke baad), andar ka content badal nahi sakte. List ek khula box hai (modify kar sakte ho), tuple sealed hai (immutable) — coordinates jaise "fixed" data ke liye perfect.
1 / 4
⚡ झट से Recap
  • () se banti hai, immutable hai (list ke ulat)
  • Function se multiple return values ke liye common
  • Single-element tuple ke liye trailing comma zaroori: (5,)
इस page में (2 subtopics)

collections.namedtuple se ek tuple bana sakte ho jiske fields ko naam se access kar sakte ho (jaise point.x), na ki sirf index se (point[0]) — code zyada readable ban jaata hai, immutability bhi maintain rehti hai.

from collections import namedtuple

Point = namedtuple("Point", ["x", "y"])
p = Point(3, 4)

print(p.x, p.y)   # 3 4 — naam se access!
print(p[0])          # 3 — index se bhi kaam karta hai
💡Tip: namedtuple ek lightweight alternative hai poori class banane ka, jab tumhe sirf immutable data grouping chahiye ho, koi methods nahi.

Lists dictionary keys nahi ban sakti (mutable hain, unhashable), lekin tuples ban sakti hain (immutable, hashable) — coordinates ya composite keys ke liye common pattern.

distances = {
    (0, 0): 0,
    (1, 1): 1.41,
    (2, 2): 2.83
}

print(distances[(1, 1)])   # 1.41

# grid[row, col] jaisa pattern bhi common hai matrix-like data ke liye
⚠️Common Mistake: Tuple mein agar ek mutable element (jaise list) ho, wo tuple bhi dictionary key nahi ban sakta — tuple ke SAARE elements immutable hone chahiye hashable hone ke liye.