نوع داده تاپل (Tuple) در پایتون

تاپل ها (tuple) دقیقا شبیه به لیست ها هستند، با این تفاوت که در تاپل ها برعکس لیست نمی توان مقادیر عناصر تعریف شده را تغییر داد در صورتی که این کار در لیست ها به سادگی امکان پذیر بود. معمولا از تاپل ها برای تولید دنباله هایی با عناصر ناهمگن استفاده می شود، تفاوت بعدی در نحوه تعریف تاپل ها می باشد، که به آن خواهیم پرداخت.
تعریف تاپل (tuple) در پایتون
یک تاپل با قرارداد عناصر آن داخل پرانتز ( ) به شکلی که عناصر با کاما ( ، ) از هم جدا شده باشند تعریف می شود، لازم به ذکر است استفاده از پرانتز اختیاری است و می توان از آن استفاده نکرد، ولی گذاشتن پرانتز خوانایی برنامه را بالا می برد. نحوه تعریف تاپل به یکی از دو شکل کلی زیر می باشد :
نکته دیگری که وجود دارد نامحدود بودن طول تاپل ها می باشد، تاپل ها نیز مانند لیست ها می توانند طولی نامحدود داشته باشند، برای محاسبه طول یک تاپل از تابع len استفاده می شود، به چند مثال در این زمینه توجه فرمایید:
از آن جایی که تاپل ها نیز مانند لیست با اندیس ها شماره گذاری می شوند پس تاپل ها نیز مانند لیست می توانند شامل عناصر تکراری باشند.
همانطور که قبلا هم گفتیم می توان عناصر تاپل را بدون استفاده از پرانتز نیز تعریف کرد که به این نوع تعریف بسته بندی تاپل (tuple packing) می گویند. به مثالی از این نوع تعریف توجه کنید:
ایجاد یک تاپل که شامل فقط یک عنصر باشد کمی با تعریف لیست متفاوت است، از آنجایی که پرانتز در دستورات و سینتکس های مختلف زبان پایتون معانی مختلفی دارد، تعریف یک تاپل تک عنصری با پرانتز گذاری و یا حتی بدون پرانتز گذاری ممکن است با سینتکس تعریف سایر متغییر ها از سمت پایتون اشتباه برداشت شود، برای این منظور در تعریف تاپل های تک عنصری از یک کاما ( , ) در انتهای عنصر استفاده می کنیم تا جلوی اشتباه پایتون را بگیریم. به مثال های زیر برای درک بهتر این موضوع توجه کنید:
روش دیگر برای ساخت یک تاپل استفاده کردن از سازنده (cast) است آن در این باره به مثال زیر توجه کنید :
دسترسی به عناصر تاپل ها
به صورت کلی تاپل ها هم مانند لیست ها به دو روش می توان به عناصر آن ها دسترسی داشت که در تصویر زیر قابل مشاهده است :

همانطور که در تصویر بالا مشاهده می کنید به دو روش می توان به عناصر یک تاپل دسترسی داشت، یکی اندیس گذاری نرمال که از 0 شروع می شود که اندیس 0 به اولین عنصر تاپل اشاره می کند، و این اندیس ها به ترتیب تا اخرین عنصر تاپل یک واحد یک واحد به جلو حرکت می کنند، که در مثال فوق طول تاپل ما 7 است که آخرین عنصر ما اندیس 6 را خواهد داشت.
دومی اندیس گذاری معکوس است می باشد به این شکل که آخرین عنصر تاپل با اندیس 1- شماره گذاری شده و هر چه به سمت ابتدای تاپل حرکت می کنیم اندیس ها یک واحد یک واحد کوچک می شوند به شکلی که اولین عنصر یک تاپل با طول 7 با اندیس 7- شماره گذاری می شود. به مثال های زیر برای درک بهتر دسترسی به عناصر یک تاپل توجه کنید :
همانطور که در مثال بالا نیز مشاهده کردید دسترسی به اندیس های خارج از رنج و طول یک تاپل باعث بروز خطا خواهد شد، در مثال بالا طول تاپل ما 7 بود که از اندیس 0 تا 6 قابل دسترسی بود، از آنجایی که اندیس 7 در تاپل تعریف شده یک اندیس نامعتبر است پایتون برای دسترسی به این اندیس خطا صادر کرده است.
نکته: اندیس گذاری در تاپل ها با اعداد صحیح انجام میگیرد و اندیس گذاری با اعداد غیر صحیح باعث بروز خطا در دسترسی می گردد به مثال زیر توجه کنید :
در تاپل ها (tuple) می توان با استفاده از نمایه گذاری تو در تو، به عناصر تاپل های (tuple) تو در تو دسترسی داشت به مثال زیر توجه فرمایید :
همانطور که قبلا هم اشاره شد، روش دیگر، برای دسترسی به عناصر یک تاپل استفاده از اندیس گذاری منفی می باشد برای درک بهتر این موضوع به مثال زیر توجه فرمایید:
همچنین می توان عناصر تاپل را به صورت دسته ای به متغییر های مورد نظر انتصاب داد به مثال زیر توجه کنید :
همانطور که در مثال بالا مشاهده کردید متغییر ها را به ترتیب مد نظر با کاما ( ، ) از یکدیگر جدا کرده و برابر با تاپل از قبل تعیین شده قرار دادیم این کار باعث شد اولین عنصر تاپل به اولین متغییر یعنی متغییر a، (ترتیب متغییر ها از چپ به راست است) نسبت داد شود دومین عنصر به متغییر دوم یعنی b و سومین عنصر به متغییر سوم یعنی c نسبت داده شود، سوال اینجاست که اگر تعداد عناصر از تعداد متغییر ها بیشتر باشد و یا بلعکس چه اتفاقی خواهد افتاد. با مثال هایی این موارد را بررسی می کنیم :
همانطور که مشاهده فرمودید در هر دو حالت پایتون از انتساب متغییر بیشتر از تعداد عناصر تاپل و همچنین انتساب متغییر کمتر از تعداد عناصر تاپل خطای کافی نبودن متغییر یا اضافی بودن متغییر صادر کرد، و این موضوع به این معناست که تعداد متغییر انتساب داده شده به یک تاپل برای دریافت نظیر به نظیر عناصر آن باید حتمی برابر با تعداد عناصر تاپل باشد. اما در صورتی که تعداد متغییر های ما کوچکتر تعداد عناصر تاپل باشد می توان با کمک گرفت از عملگر ستاره ( * )، این مشکل را پوشش داد. به مثال زیر توجه کنید :
همانطور که مشاهده کردید با قرار دادن ستاره ( * ) در ابتدای نام آخرین متغییر، این مشکل را حل کرد، با استفاده از ستاره ( * ) در ابتدای نام متغییر آخر باعث می شوید که پایتون مثل یک لیست با متغییر آخر (ستاره دار) و تمام عناصر باقی مانده در تاپل را به آن اختصاص دهد و دیگر خطای ناکافی بودن متغییر صادر نمی شود.
حال اگر ستاره ( * ) را به متغییری غیر از آخرین متغییر اضافه کنید ، پایتون عناصر تاپل را به شکلی به متغییر ستاره دار نسبت می دهد که عناصر باقی مانده با تعداد متغییر های باقی برابر باشد. با مثال زیر این مفهوم را بهتر درک خواهید کرد:
برش دادن تاپل ها
همانطور که می دانید منظور از برش دادن، جدا کردن بخشی از داده های یک تاپل به شکل دسته ای می باشد که به کمک عملگر کولون ( : ) قابل انجام است :
تغییر عناصر یک تاپل
همانطور که قبلا هم بیان شد، تاپل ها قابل تغییر نیستند، ولی اگر تاپل به صورت تو در تو تعریف شده باشد، به شکلی که برخی عناصر آن خود عناصری قابل تغییر باشند مانند لیست ها، رشته ها و … می توان عناصر قابل تغییر آن را تغییر داد به مثال های زیر توجه کنید:
الحاق و تکرار در تاپل ها
برای الحاق دو تاپل می توان از عملگر ( + ) استفاده کرد و برای تکرار عناصر یک تاپل با همان ترتیب موجود در آن و با تعداد تکرار دلخواه می توان از عملگر ( * ) استفاده کرد. نکته قابل توجه این است که حاصل عمل الحاق یا تکرار چند تاپل خود نیز یک تاپل جدید می باشد.
حذف تاپل ها
عناصر یک تاپل تغییر پذیر نیستند، به این معنا که عناصر قابل حذف هم نیستند، اما حذف کامل یک تاپل با کمک دستور del امکان پذیر است :
همانطور که در مثال بالا مشاهده می کنید حذف یک عنصر از تاپل باعث اعلام خطا توسط پایتون می شود ولی حذف کلی تاپل به راحتی انجام شد به شکلی که فراخوانی نام تاپل حذف شده باعث بروز خطا شد و پایتون اعلام کرد چنین شناسه ای وجود ندارد.
متد های تاپل
متد هایی که باعث اضافه یا حذف شدن عناصر می شوند، برای تاپل ها وجود ندارد، ولی دو متد index برای پیدا کردن اندیس عنصر مد نظر و متد count برای شمارش تعداد تکرار عنصر مد نظر در تاپل قابل استفاده هستند.
تست عضویت در تاپل ها
برای بررسی وجود یا عدم وجود یک عنصر در یک تاپل می توان از کلید in به شکل زیر استفاده کرد:
تاپل ها در حلقه های for
از حلقه های for می توان برای ترکیب کردن تکراری تاپل ها استفاده کرد، به مثال زیر توجه کنید :
به شکل کلی غیر قابل تغییر بودن عناصر یک تاپل در برخی موارد یک امتیاز محصوب می شود، فرض کنید مقادیری دارید که نمی خواهید در طول اجرای برنامه تغییری کنند، استفاده از تاپل در این خصوص به شما اطمینان میدهد که مقادیر انتصاب داده شده به متغییر در هنگام تعریف دیگر قابل تغییر نی باشد، و نکته دوم، بخاطر ایستا بودن و غیرقابل تغییر بودن تاپل ها، تکرار در آن ها نسبت به لیست ها با سرعت بیشتری انجام می پذیرد.
دیدگاهتان را بنویسید