سطح مقدماتی (Beginner Level)
در پایتون علاوه بر لیستها (Lists) و دیکشنریها (Dictionaries)، دو ساختار داده بسیار مهم دیگر به نام Tuple (تاپل) و Set (مجموعه) وجود دارند. درک تفاوت اینها با لیست برای نوشتن کد بهینه ضروری است.
۱. تاپل (Tuple) چیست؟
تاپلها بسیار شبیه به لیستها هستند، با یک تفاوت اساسی: تغییرناپذیر (Immutable) هستند. یعنی پس از تعریف، نمیتوانید آیتمی را به آن اضافه، حذف یا تغییر دهید.
- سینتکس: از پرانتز
()استفاده میشود. - کاربرد: برای دادههایی که نباید تغییر کنند (مثل مختصات جغرافیایی، تنظیمات ثابت).
مثال ۱: تعریف و دسترسی ساده
مثال ۲: تلاش برای تغییر (خطا)
این مثال نشان میدهد که چرا تاپلها امن هستند. کد زیر اگر اجرا شود خطا میدهد، بنابراین به صورت Static نمایش داده میشود.
my_tuple = (1, 2, 3)
# این خط باعث خطای TypeError میشود
# my_tuple[0] = 99
۲. تکعضویها در تاپل
یک نکته مهم برای مبتدیان: اگر بخواهید تاپلی با یک عضو بسازید، گذاشتن پرانتز کافی نیست؛ باید حتماً یک ویرگول , بگذارید.
۳. مجموعه (Set) چیست؟
مجموعهها (Sets) کلکسیونی از دادهها هستند که دو ویژگی مهم دارند:
- بدون تکرار: مقادیر تکراری خودکار حذف میشوند.
- بدون ترتیب (Unordered): ترتیب ذخیرهسازی تضمین نمیشود و ایندکس ندارند.
- سینتکس: از آکولاد
{}استفاده میشود (شبیه دیکشنری اما بدون کلید-مقدار).
مثال ۱: حذف تکراریها
مثال ۲: افزودن و حذف کردن در Set
سطح پیشرفته (Professional Level)
در سطح حرفهای، انتخاب بین Tuple، List و Set تاثیر مستقیم بر Performance (کارایی) و Memory Usage (مدیریت حافظه) دارد.
۱. مقایسه حافظه: Tuple vs List
تاپلها به دلیل تغییرناپذیر بودن، فضای کمتری نسبت به لیستها اشغال میکنند و ساخت آنها سریعتر است.
۲. آنپک کردن (Unpacking)
در پایتون مدرن، استفاده از Unpacking برای استخراج دادهها از تاپل بسیار رایج است.
مثال ۱: Unpacking ساده و پیشرفته
۳. عملیات ریاضی مجموعهها (Set Theory)
قدرت اصلی Setها در انجام عملیات ریاضی مثل اجتماع، اشتراک و تفاضل است. این عملیات بسیار سریعتر از حلقههای for روی لیستها هستند.

مثال ۱: اشتراک و اجتماع
مثال ۲: تفاضل و تفاضل متقارن
۴. NamedTuple (تاپلهای نامدار)
برای کدهای تمیزتر، به جای استفاده از ایندکس [0]، میتوان از NamedTuple استفاده کرد که خوانایی کد را به شدت افزایش میدهد.
۵. FrozenSet
همانطور که Tuple نسخه تغییرناپذیر List است، frozenset نیز نسخه تغییرناپذیر Set است. از آنجا که frozenset تغییرناپذیر است، میتواند به عنوان "کلید" (Key) در دیکشنری استفاده شود (برخلاف Set معمولی).