Python - Unpack Tuples

در پایتون، Tuple Unpacking به معنای باز کردن عناصر یک Tuple و اختصاص آن‌ها به متغیرهای جداگانه است. این قابلیت باعث می‌شود کار با Tupleها ساده‌تر و خواناتر شود.

🔹 1️⃣ Unpacking ساده

point = (10, 20) x, y = point print(x) # 10 print(y) # 20

تعداد متغیرها باید دقیقاً با تعداد عناصر Tuple برابر باشد، در غیر این صورت خطا رخ می‌دهد.

🔹 2️⃣ Unpacking با rest*

می‌توانید باقی‌مانده عناصر را در یک لیست جمع کنید:

numbers = (1, 2, 3, 4, 5) first, second, *rest = numbers print(first) # 1 print(second) # 2 print(rest) # [3, 4, 5]
  • می‌توان * را در وسط یا انتها هم استفاده کرد:

first, *middle, last = numbers print(middle) # [2, 3, 4]

🔹 3️⃣ Unpacking در حلقه‌ها

برای دسترسی راحت به عناصر Tuple در لیست تو در تو یا داده‌های پیچیده:

points = [(1, 2), (3, 4), (5, 6)] for x, y in points: print(f"x={x}, y={y}")

📌 خروجی:

x=1, y=2 x=3, y=4 x=5, y=6

🔹 4️⃣ Unpacking هنگام بازگشت از توابع

توابع می‌توانند Tuple بازگردانند و با Unpacking مقادیر را مستقیماً دریافت کنید:

def get_coordinates(): return (100, 200) x, y = get_coordinates() print(x, y) # 100 200

🔹 5️⃣ استفاده در چندین سطح (Nested Tuple)

می‌توانید Tupleهای تو در تو را هم Unpack کنید:

nested = ((1, 2), (3, 4)) (a, b), (c, d) = nested print(a, b, c, d) # 1 2 3 4

✅ نکات مهم

  • تعداد متغیرها باید با تعداد عناصر Tuple مطابقت داشته باشد یا از * برای بقیه استفاده کنید.

  • Unpacking در حلقه‌ها، توابع و داده‌های تو در تو بسیار مفید و خوانا است.

  • می‌توانید ترکیبی از متغیرهای منفرد و rest* برای جمع کردن باقی عناصر داشته باشید.

💡 خلاصه:

  • x, y = tuple → Unpack ساده

  • first, *rest = tuple → جمع‌بندی باقی عناصر

  • for a, b in list_of_tuples: → Unpacking در حلقه

  • (a, b), (c, d) = nested_tuple → Unpacking در Tuple تو در تو

این روش‌ها تمام کاربردهای Tuple Unpacking در پایتون را پوشش می‌دهند.