سطح مقدماتی (Beginner Level)
تاپلها (Tuples) در پایتون ساختارهای دادهای تغییرناپذیر (Immutable) هستند. این بدان معناست که پس از تعریف، نمیتوانیم آیتمی را به آنها اضافه، حذف یا ویرایش کنیم. به همین دلیل، برخلاف لیستها که متدهای زیادی مانند append، pop یا sort دارند، تاپلها تنها دو متد داخلی اصلی دارند:
count()index()
در این بخش به بررسی دقیق این دو متد و کاربرد آنها میپردازیم.

۱. متد count()
این متد تعداد دفعاتی که یک مقدار خاص در تاپل تکرار شده است را بازمیگرداند. اگر مقدار مورد نظر در تاپل وجود نداشته باشد، عدد 0 برگردانده میشود.
سینتکس:
tuple_name.count(value)
مثال اول: شمارش اعداد
در این مثال ساده، تعداد تکرار عدد ۲ را میشماریم.
مثال دوم: شمارش رشتهها
این متد به حروف کوچک و بزرگ حساس است (Case-sensitive).
مثال سوم: مقادیر موجود نیست
اگر مقداری را جستجو کنیم که در تاپل نیست، نتیجه صفر خواهد بود.
۲. متد index()
این متد اولین مکانی (Index) که مقدار مورد نظر در آن قرار دارد را برمیگرداند. جستجو از اندیس ۰ شروع میشود.
نکته مهم: اگر مقدار مورد نظر در تاپل پیدا نشود، پایتون خطای ValueError میدهد.
سینتکس:
tuple_name.index(value, start, end)
value: مقداری که دنبال آن هستیم (الزامی).start: اندیس شروع جستجو (اختیاری).end: اندیس پایان جستجو (اختیاری).
مثال اول: پیدا کردن اندیس ساده
مثال دوم: استفاده از پارامترهای start و end
میتوانیم محدوده جستجو را محدود کنیم. در اینجا جستجو را از اندیس ۲ شروع میکنیم تا دومین "banana" را پیدا کنیم.
مثال سوم: بررسی ساختار متد (بدون اجرا)
گاهی اوقات نیاز است بدانیم تعریف متد چگونه است. کد زیر تنها یک تعریف شماتیک است.
# این یک قطعه کد استاتیک برای نمایش تعریف است
def index(self, value, start=0, stop=9223372036854775807):
"""
Return first index of value.
Raises ValueError if the value is not present.
"""
pass
سطح پیشرفته (Professional Level)
در سطح حرفهای، کار با تاپلها فراتر از فراخوانی دو متد ساده است. ما باید درک کنیم چرا متدها محدود هستند، چگونه محدودیتها را دور بزنیم، و چگونه خطاهای احتمالی را مدیریت کنیم. همچنین بررسی Magic Methods (داندر متدها) در تاپلها دید عمیقتری به ما میدهد.
مدیریت خطا در index()
از آنجایی که متد index() در صورت پیدا نکردن مقدار باعث Crash شدن برنامه میشود (با خطای ValueError)، در کدهای حرفهای همیشه باید آن را در بلوک try-except قرار داد یا قبل از آن وجود عضو را چک کرد.
مثال اول: مدیریت خطا با Try-Except
این روش استانداردترین راه برای جلوگیری از توقف برنامه است.
مثال دوم: بررسی با in قبل از index
یک روش جایگزین (و گاهی کندتر به دلیل دو بار پیمایش) استفاده از عملگر in است.
دور زدن محدودیتها (تغییر تاپل)
از آنجا که تاپل متدهای append یا remove ندارد، اگر مجبور به تغییر محتوای آن شدید، الگوی رایج تبدیل به لیست و بازگشت به تاپل است.
هشدار پرفورمنس: این عملیات هزینه بر است و برای دادههای حجیم توصیه نمیشود.
متدهای جادویی (Magic Methods) و عملکرد داخلی
اگرچه ما فقط count و index را به صورت آشکار میبینیم، اما تاپلها متدهای داخلی (Dunder Methods) دارند که رفتار آنها را کنترل میکند. دانستن اینها برای درک عمیق پایتون ضروری است.
__len__: توسط تابعlen()فراخوانی میشود.__contains__: توسط عملگرinفراخوانی میشود.__add__: برای اتصال دو تاپل (+).__mul__: برای تکرار تاپل (*).
مثال فنی: مقایسه حجم حافظه (Tuple vs List)
یکی از دلایلی که متدهای تاپل کم هستند، بهینهسازی حافظه است. تاپلها متدهای کمتری ذخیره میکنند و سربار (Overhead) کمتری دارند.
توابع کمکی به جای متدها
چون تاپل متد sort() یا reverse() ندارد (چون اینها درجا یا In-place تغییر ایجاد میکنند)، باید از توابع داخلی پایتون استفاده کنیم که خروجی جدید تولید میکنند.