در «زبان برنامه‌نویسی پایتون» (Python Programming Language)، شش نوع داده گوناگون شامل «عدد» (Number)، «لیست» (List)، «رشته» (String)، «مجموعه» (Set)، «دیکشنری» (Dictionary) و «تاپل» (Tuple) وجود دارد. در این مطلب، به نوع داده تاپل در پایتون پرداخته شده است و ضمن آن، روش ساخت تاپل، موارد کاربرد و متدهای گوناگون مربوط به تاپل‌ها که باید با آن‌ها آشنایی داشت تشریح شده‌اند.

نوع داده تاپل در پایتون

در زبان برنامه‌نویسی پایتون، تاپل شبیه به لیست است. تفاوت بین لیست و تاپل در آن است که عناصر تاپل پس از آنکه به آن تخصیص داده شدند، قابل تغییر نخواهند بود. این در حالی است که عناصر لیست قابل تغییر هستند.

مزایای تاپل نسبت به لیست در پایتون

از آنجا که تاپل‌ها کاملا شبیه به لیست‌ها هستند، هر دوی آن‌ها در شرایط مشابهی مورد استفاده قرار می‌گیرند. اگرچه، مزایای خاصی برای پیاده‌سازی تاپل، در مقایسه با لیست، وجود دارد. در ادامه، برخی از مزایای اصلی آورده شده‌اند.

  • از نوع داده تاپل در پایتون معمولا برای نوع داده‌های ناهمگون (متفاوت) استفاده می‌شود و لیست برای نوع داده‌های همگون (مشابه) استفاده می‌شود.
  • از آنجا که تاپل غیر قابل تغییر است، حلقه زدن در تاپل (تکرار)، سریع‌تر از لیست انجام می‌شود. بنابراین، کارایی به میزان کمی تقویت می‌شود.
  • به دلیل آنکه تاپل‌ها حاوی عناصر غیر قابل تغییر هستند، می‌توان از آن‌ها به عنوان کلید دیکشنری استفاده کرد. انجام چنین کاری با استفاده از لیست امکان‌پذیر نیست.
  • تاپل‌ها حاوی عناصر غیر قابل تغییری هستند که می‌توان از آن‌ها به عنوان کلید دیکشنری استفاده کرد. با استفاده از لیست، این کار امکان‌پذیر نیست.
  • اگر کاربر داده‌هایی داشته باشند که تغییر نمی‌کنند، پیاده‌سازی آن به عنوان تاپل، تضمین می‌کند که داده‌ها در مقابل نوشتن امن هستند (write-protected) و فقط خواندنی باقی می‌مانند.

ساخت یک تاپل در پایتون

یک تاپل، با قرار دادن همه عناصر درون یک جفت پرانتز، که با کاما از هم جدا شده‌اند، ساخته می‌شود. استفاده از پرانتز اختیاری محسوب می‌شود، ولی استفاده از آن‌ها بهتر است. تاپل می‌تواند هر تعدادی عنصر از انواع گوناگون (صحیح، ممیزشناور، لیست، رشته و دیگر موارد) داشته باشد. در ادامه، مثال‌هایی در همین رابطه ارائه شده‌اند.

در مثال بالا، ابتدا با استفاده از () =my_tuple یک تاپل خالی ساخته می‌شود. سپس، با استفاده از تابع (print(my_tuple، تاپل ساخته شده چاپ می‌شود. با بهره‌گیری از دستور (my_tuple = (1, 2, 3، تاپلی با نام my_tuple، حاوی سه عنصر ساخته می‌شود. همانطور که پیش‌تر بیان شد، تاپل‌ها می‌توانند حاوی انواع گوناگونی از داده‌ها باشند. در کد بالا، با استفاده از دستور ((my_tuple = (“mouse”, [8, 4, 6], (1, 2, 3، تاپلی ساخته می‌شود که حاوی یک رشته، یک لیست و یک تاپل دیگر است. هنگامی که با استفاده از دستور  (print(my_tuple، خروجی چاپ می‌شود، به صورت ((mouse”, [8, 4, 6], (1, 2, 3″) است. با استفاده از دستور “my_tuple = 3, 4.6, “dog و بدون استفاده از پرانتز، یک تاپل ساخته شده که حاوی یک عدد صحیح، یک عدد ممیز شناور و یک رشته است. در صورت چاپ رشته با استفاده از دستور (print(my_tuple، خروجی به صورت 3, 4.6, “dog” خواهد بود.

نکته جالب توجه پیرامون تاپل‌ها آن است که امکان جداسازی عناصر آن‌ها (Unpacking) وجود دارد. در کد بالا، با استفاده از دستور a, b, c = my_tuple، عناصر تاپل my_tuple جداسازی شده‌اند و در سه متغیر b ،a و c قرار می‌گیرند. سپس با استفاده از سه دستور (print(b) ،print(a و (print(c مقادیر سه متغیر b ،a و c چاپ می‌شوند که به ترتیب برابر با 3، ۴.۶ و dog است. ساخت تاپل با تنها یک عنصر، کمی دشوار است. داشتن یک عنصر درون پرانتز کافی نیست. نیاز به قرار دادن یک کاما در پایان عنصر است تا مشخص شد که این نوع داده در واقع یک تاپل است. مثال‌های زیر در همین رابطه قابل توجه هستند.

در قطعه کد بالا، هنگامی که دستور (“my_tuple = (“hello و سپس ((print(type(my_tuple وارد می‌شود، خروجی به صورت <‘class ‘str> خواهد بود. در واقع، متغیر my_tuple حاوی یک رشته با مقدار hello است. اما هنگامی که دستور به صورت (,”my_tuple = (“hello نوشته می‌شود، متغیر my_tuple در واقع یک تاپل است که حاوی یک عنصر، یعنی رشته hello، محسوب می‌شود. بنابراین، خروجی ((print(type(my_tuple برابر با <‘class ‘tuple> خواهد بود.

دسترسی به یک عنصر تاپل در پایتون

راهکارهای متعددی برای دسترسی به عناصر یک تاپل وجود دارد. در ادامه، این روش‌ها مورد بررسی قرار گرفته‌اند.

اندیس‌گذاری

می‌توان از عملگرد اندیس []، برای دسترسی به یک عنصر در تاپل استفاده کرد. نکته مهمی که باید به آن توجه داشت آن است که، اندیس عناصر نوع داده تاپل در پایتون از صفر آغاز می‌شود. بنابراین، اندیس عناصر تاپلی که حاوی ۶ عنصر است از ۰ تا ۵ خواهد بود. تلاش برای دسترسی به عناصر با اندیس‌های دیگر (۶، ۷ و …) در چنین تاپلی، منجر به خطای IndexError می‌شود. اندیس باید یک مقدار صحیح باشد؛ به عبارت دیگر، نمی‌توان از نوع داده اعشاری یا دیگر انواع داده استفاده کرد.

در صورت استفاده از نوع داده‌ای به جز صحیح به عنوان اندیس یک آرایه، خطای IndexError به وقوع می‌پیوندد. مانند لیست‌ها، در تاپل‌ها نیز برای دسترسی داشتن به عناصر در «تاپل‌های تو در تو» (Nested Tuple) از اندیس‌گذاری تو در تو استفاده می‌شود. مثال‌هایی در همین رابطه در ادامه ارائه شده‌اند.

در قطعه کد بالا، ابتدا یک تاپل با عنوان my_tuple، حاوی ۶ مقدار از نوع رشته ساخته شده است؛ بنابراین اندیس تاپل از صفر تا ۵ خواهد بود. با استفاده از دستور ([print(my_tuple[0، عنصر با اندیس صفر (اولین عنصر تاپل) بازگردانده و در خروجی چاپ می‌شود. بنابراین، خروجی به صورت زیر خواهد بود.

با استفاده از دستور ([print(my_tuple[5، عنصری از تاپل با اندیس ۵ (در واقع، عنصر ششم که آخرین عنصر در تاپل my_tuple است) چاپ می‌شود. خروجی این دستور، به صورت زیر خواهد بود.

در صورتی که در قطعه کدی که در بالاتر آورده شده بود، دستور ([print(my_tuple[6 از حالت «توضیحات» (Comment) خارج و اجرا شود، خطای «TypeError: list indices must be integers, not float» رخ می‌دهد. دلیل این امر آن است که در تاپل تعریف شده، تنها اندیس‌های ۰ تا ۵ وجود دارند. برای دستور [my_tuple[2.0 نیز، خروجی به صورت بیان شده خواهد بود. دلیل این امر، همان‌طور که پیش‌تر نیز بیان شد، آن است که اندیس‌ها باید مقادیر صحیح عددی (که در رنج اندیس‌های یک تاپل مشخص قرار دارند) باشند.

((n_tuple = (“mouse”, [8, 4, 6], (1, 2, 3، یک تاپل تو در تو حاوی یک رشته، یک لیست و یک تاپل دیگر است. با استفاده از دستور ([print(n_tuple[0][3، از عنصر با اندیس صفر تاپل (یعنی رشته Mouse)، عنصر با اندیس ۳ (یعنی عنصر چهارم رشته که مقدار آن s است) فراخوانی می‌شود. خروجی دستور مذکور، به صورت زیر خواهد بود.

با استفاده از دستور ([print(n_tuple[1][1، از عنصر با اندیس ۱ تاپل (یک لیست با سه عنصر از نوع صحیح است)، عنصر با اندیس 1 (دومین عنصر لیست) فراخوانی می‌شود. خروجی این دستور، به صورت زیر است.

اندیس‌گذاری منفی

پایتون امکان اندیس‌گذاری منفی را برای دنباله‌ها فراهم می‌کند. اندیس ۱- به آخرین عنصر آرایه و ۲- به عنصر یکی مانده به آخر اشاره دارد. برای سایر عناصر، همین روال ادامه خواهد داشت. مثال‌های زیر در همین رابطه قابل توجه هستند.

در کد بالا، ابتدا یک تاپل با عنوان my_tuple ساخته شده است. سپس، با استفاده از دستور ([print(my_tuple[-1 عنصر آخر لیست (عنصر با اندیس پنج که همان آخرین عنصر از تاپل است) چاپ می‌شود. خروجی دستور مذکور، به صورت زیر خواهد بود.

دستور ([print(my_tuple[-6، عنصر با اندیس ۰ (اولین عنصر از تاپل) را بازگردانی و چاپ می‌کند. خروجی این دستور به صورت زیر خواهد بود.

برش‌زنی

می‌توان به رنجی از عناصر یک تاپل، به وسیله عملگر برش‌زنی (Slicing)، یعنی «دو نقطه» (Colon) دسترسی داشت. در ادامه، مثال‌هایی در همین رابطه، ارائه شده است.

در قطعه کد بالا، ابتدا یک تاپل حاوی نه عنصر از نوع رشته با عنوان my_tuple تعریف شده است. بنابراین، اندیس عناصر تاپل از ۰ تا ۸ و در اندیس‌گذاری منفی از ۹- تا ۱- است. با استفاده از دستور ([print(my_tuple[1:4، از عنصر با اندیس ۱ تا اندیس ۳ در خروجی چاپ می‌شوند (در واقع عنصر دوم تا عنصر چهارم تاپل). خروجی این دستور به صورت زیر خواهد بود.

با استفاده از دستور ([print(my_tuple[:-7، از عنصر با اندیس ۹- (یا اندیس ۰ که همان اولین عنصر تاپل است) تا عنصر با اندیس ۸- (عنصر با اندیس ۱ یا همان دومین عنصر تاپل) در خروجی چاپ می‌شوند. در واقع، از آغاز آرایه تا عنصر دوم آرایه در خروجی چاپ خواهند شد. خروجی دستور مذکور، به صورت زیر خواهد بود.

با استفاده از دستور ([:print(my_tuple[7، از عنصر با اندیس هفت (هشتمین عنصر تاپل) تا آخرین عنصر آن (اندیس ۸) در خروجی چاپ خواهد شد.

در نهایت، با استفاده از دستور ([:]print(my_tuple همه عناصر آرایه، از اندیس ۰ تا ۸، در خروجی چاپ خواهند شد.

در تصویر زیر، اندیس‌های مورد استفاده برای برش‌زنی، به بهترین شکل بصری‌سازی شده‌اند. بنابراین، برای دسترسی به رنجی از عناصر در تاپل، نیاز به اندیسی است که بخش مورد نظر از تاپل را برش می‌زند.

نوع داده تاپل در پایتون -- به زبان ساده

تغییر یک تاپل

برخلاف لیست‌ها، نوع داده تاپل در پایتون غیر قابل تغییر است. این یعنی، عناصر یک تاپل پس از آنکه به تاپل تخصیص پیدا کردند، قابل تغییر محسوب نمی‌شوند. اما اگر عنصر خود نوع داده قابل تغییری مانند لیست باشد، این عصر تو در تو قابل تغییر خواهد بود. همچنین، می‌توان به یک تاپل مقادیر گوناگونی را تخصیص داد (بازتخصیص). مثال زیر در این رابطه قابل توجه است.

در کد بالا، ابتدا یک تاپل با my_tuple تعریف شده که حاوی سه نوع داده عدد صحیح و یک لیست است. در صورتی که هشتمین خط کد بالا (my_tuple[1] = 9) از حالت توضیحات خارج شود، خطای زیر نمایش داده خواهد  شد.

با توجه به اینکه چهارمین عنصر تاپل، خود یک لیست است که از انواع داده قابل تغییر محسوب می‌شود، با اجرای دستور my_tuple[3][0] = 9، عدد ۹ به اندیس ۰ از لیست تخصیص پیدا می‌کند. خروجی (print(my_tuple در این حالت، به صورت زیر خواهد بود.

می‌توان از عملگر + برای ترکیب دو تاپل استفاده کرد. به این کار، «الحاق» (Concatenation) نیز گفته می‌شود. همچنین، می‌توان عناصر موجود در تاپل را با استفاده از عملگر «*» به تعداد دفعات مشخصی تکرار کرد. هر دو عملگرد + و * منجر به ایجاد تاپل جدیدی می‌شوند.

حذف یک تاپل

چنانچه در بالا بیان شد، نمی‌توان عناصر موجود در تاپل را تغییر دارد؛ همچنین، نمی‌توان یک عنصر را از تاپل حذف کرد. اما، حذف کردن یک تاپل به طور کامل، با استفاده از کلیدواژه del امکان‌پذیر است. مثال زیر در همین رابطه قابل توجه است.

در کد بالا، ابتدا یک تاپل با عنوان my_tuple تعریف شده که حاوی ۹ عنصر است. یعنی، اندیس تاپل از ۰ تا ۸ خواهد بود. در صورتی که در کد بالا، دستور [del my_tuple[3 از حالت توضیحات خارج و اجرا شود، خطای «TypeError: ‘tuple’ object doesn’t support item deletion» به وقوع می‌پیوندد. زیرا، امکان حذف عنصر از تاپل وجود ندارد. در صورت اجرای دستور del my_tuple، تاپل به طور کامل حذف می‌شود. بنابراین، با اجرای دستور my_tuple، خطای NameError: name ‘my_tuple’ is not defined صادر می‌شود.

متدهای نوع داده تاپل در پایتون

متدهایی که عنwر اضافه و یا حذف می‌کنند، برای تاپل وجود ندارند. در واقع، تنها دو متد زیر برای تاپل موجود است.

  • (count(x: تعداد عناصر تاپل که برابر با آرگومان x هستند را باز می‌گرداند.
  • (index(x: اندیس اولین عنصری که با آرگومان x مطابقت داشت را باز می‌گرداند.

در ادامه، مثال‌هایی از متدهای مورد استفاده برای نوع داده تاپل در پایتون آورده شده است.

در کد بالا، ابتدا یک تاپل با ۵ عنصر از نوع رشته تعریف شده است. سپس، با استفاده از دستور ((‘print(my_tuple.count(‘p تعداد مولفه‌هایی که با آرگومان متد مطابقت دارند (p) را بازگردانده و در خروجی چاپ می‌کند. خروجی برابر با ۲ خواهد بود. دستور ((‘print(my_tuple.index(‘l، اندیس اولین عنصری که با آرگومان متد مطابقت دارد (l) را باز می‌گرداند. خروجی، برابر با ۳ خواهد بود.

دیگر عملیات روی تاپل در پایتون

عملیات دیگری نیز روی تاپل‌ها قابل انجام است که در ادامه مورد بررسی قرار گرفته‌اند.

تست عضویت تاپل در پایتون

با استفاده از کلیدواژه in می‌توان بررسی کرد که آیا یک عنصر در تاپل وجود دارد یا خیر. مثال‌های زیر در این رابطه قابل توجه هستند.

در کد بالا، ابتدا یک تاپل با ۵ عنصر تعریف شده است. با استفاده از دستور (print(‘a’ in my_tuple، در صورتی که a در تاپل وجود داشته باشد مقدار True و در غیر این صورت، مقدار False چاپ می‌شود. در اینجا، چون در تاپلی که در ابتدای کد تعریف شد رشته a وجود دارد، خروجی True است. بر اساس آنچه بیان شد، خروجی دستور (print(‘b’ in my_tuple مقدار False است؛ زیرا در تاپل تعریف شده عنصر b وجود ندارد. در دستور (print(‘g’ not in my_tuple به جای in از not in استفاده شده است؛ بنابراین، خروجی True است چون g در تاپل وجود ندارد.

حلقه زدن درون تاپل در پایتون

با استفاده از حلقه for می‌توان در تاپل حلقه زد. مثال زیر در همین رابطه است.

در کد بالا، مادامی که اسمی در تاپل وجود داشته باشد، عبارت «Hello + اسم» در خروجی چاپ خواهد شد. بنابراین، خروجی قطعه کد بالا به صورت زیر خواهد بود.

توابع توکار برای تاپل‌ها

توابع توکاری مانند ()any() ،enumerate() ،len() ،max() ،min() ،sorted() ،tuple و ()all معمولا برای انجام کارهای گوناگون با تاپل‌ها مورد استفاده قرار می‌گیرند. در ادامه، کارکردهای این توابع بیان شده است.

  • ()all: در صورتی که همه عناصر تاپل true باشند و یا تاپل خالی باشد، مقدار True را باز می‌گرداند.
  • ()any: اگر حتی یک عنصر تاپل هم true باشد، مقدار True را باز می‌گرداند. در صورتی که تاپل خالی باشد، False را در خروجی نشان می‌دهد.
  • ()enumerate: یک شی شمارشی را باز می‌گرداند. حاوی اندیس و مقدار همه عناصر، به صورت جفت‌های (اندیس، مقدار) است.
  • ()len: طول تاپل (تعداد عناصر آن) را باز می‌گرداند.
  • ()max: بزرگترین عنصر در تاپل را باز می‌گرداند.
  • ()min: کوچکترین عنصر در تاپل را باز می‌گرداند.
  • ()sorted: عناصر تاپل را دریافت می‌کند و یک لیست مرتب شده جدید را باز می‌گرداند (خود لیست اصلی را مرتب نمی‌کند).
  • ()sum: مجموع همه عناصر تاپل را باز می‌گرداند.
  • ()tuple: یک مقدار قابل تکرار (لیست، رشته، مجموعه، دیکشنری) را به تاپل تبدیل می‌کند.

فیلم آموزش پایتون مقدماتی

نوع داده مجموعه در پایتون — به زبان ساده

طول مدت این دوره آموزشی برابر با نوزده ساعت و پنجاه و سه دقیقه و مدرس آن مهندس پژمان اقبالی است. فیلم آموزش پایتون مقدماتی برای افراد تازه‌وارد به دنیای برنامه‌نویسی پایتون و کسانی که با پایتون تا حدی آشنا هستند و قصد دارند سطح دانش و مهارت خود را بیش از پیش ارتقا دهند مناسب است. در فیلم آموزش مقدماتی پایتون، ضمن معرفی و آموزش چگونگی نصب پایتون، مباحث ساختمان داده‌ها در پایتون، توابع و ماژول‌ها، کلاس، خواندن و نوشتن فایل‌ها و دیگر موارد مورد بررسی قرار می‌گیرند.

آموزش کار با کتابخانه های NumPy و Matplotlib در پایتون

طول مدت این دوره آموزشی چهار ساعت و چهل و شش دقیقه و مدرس آن مهندس میترا تجربه‌کار است. در این دوره، مباحث پیشرفته‌تر و در واقع تکمیلی آموزش برنامه‌نویسی پایتون مورد بررسی قرار گرفته است. بنابراین، این دوره برای افرادی مناسب است که فیلم آموزش مقدماتی پایتون را مشاهده کرده‌اند و یا، با مبانی پایتون آشنایی دارند. از جمله موضوعات مورد بررسی در فیلم آموزش پایتون تکمیلی می‌توان به معرفی و تعریف آرایه‌ها در زبان پایتون، معرفی بسته نام‌پای (NumPy)، رسم نمودار در پایتون و دیگر موارد اشاره کرد.

فیلم آموزش پایتون با مثال‌های عملی

نوع داده مجموعه در پایتون — به زبان ساده

طول مدت این دوره آموزشی سیزده ساعت و بیست دقیقه است. مدرس دوره آموزش پایتون فرادرس با مثال‌های عملی، مهندس فرشید شیرافکن است. این فیلم آموزش پایتون برای افرادی مناسب است که در صدد یادگیری پایتون از پایه و به صورت عملی، همراه با بررسی مثال‌ها و حل مسائل نمونه با استفاده از برنامه‌نویسی پایتون هستند. از جمله سرفصل‌های این دوره می‌توان به معرفی انواع داده‌ها در پایتون، عملگرها، دستورات شرطی، حلقه‌ها، رشته، لیست، تاپل، دیکشنری، توابع، عبارات منظم و الگوریتم‌های مرتب‌سازی اشاره کرد.

فیلم آموزش پایتون با برنامه‌نویسی شی‌گرا

نوع داده مجموعه در پایتون — به زبان ساده

طول مدت این دوره آموزشی هفت ساعت و بیست و نه دقیقه و مدرس آن، مهندس فرشید شیرافکن است. این دوره برای افرادی که با زبان برنامه‌نویسی پایتون آشنایی دارند و در صدد یادگیری شی‌گرایی در این زبان هستند، مناسب است. در این دوره آموزشی، مباحث گوناگون پیرامون شی‌گرایی شامل شی، کلاس، شی‌گرایی، ارث‌بری، پلی‌مورفیسم و سربارگذاری عملگرها مورد بررسی قرار گرفته است.

اگر این مطلب برای شما مفید بوده است، آموزش‌ها و مطالب زیر نیز به شما پیشنهاد می‌شوند:

الهام حصارکی (+)

«الهام حصارکی»، فارغ‌التحصیل مقطع کارشناسی ارشد مهندسی فناوری اطلاعات، گرایش سیستم‌های اطلاعات مدیریت است. او در زمینه هوش مصنوعی و داده‌کاوی، به ویژه تحلیل شبکه‌های اجتماعی، فعالیت می‌کند.

بر اساس رای 2 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *