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

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

فهرست مطالب

تاپل (Tuple) چیست؟

تاپل یک ساختار داده ترتیبی (Ordered) است که می‌تواند انواع مختلفی از داده‌ها را در خود ذخیره کند. هر عنصر دارای شماره (Index) است و ترتیب عناصر همیشه حفظ می‌شود. برخلاف لیست، بعد از ساخت تاپل دیگر نمی‌توان:

  • عنصر جدید اضافه کرد.
  • عنصری را حذف کرد.
  • مقدار یک عنصر را تغییر داد.

به همین دلیل گفته می‌شود تاپل Immutable (تغییرناپذیر) است.

fruits = ("Apple", "Banana", "Orange")
print(fruits)

خروجی:

('Apple', 'Banana', 'Orange')

چرا از تاپل استفاده می‌کنیم؟

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

ایجاد تاپل در پایتون

برای ساخت یک تاپل، عناصر را داخل پرانتز () قرار می‌دهیم و آن‌ها را با کاما از هم جدا می‌کنیم.

numbers = (10, 20, 30, 40)
print(numbers)

خروجی:

(10, 20, 30, 40)

تاپل می‌تواند شامل انواع مختلف داده باشد.

person = ("Ali", 25, 178.5, True)
print(person)

خروجی:

('Ali', 25, 178.5, True)

همچنین می‌توان داخل یک تاپل، ساختارهای داده دیگری مانند لیست یا حتی تاپل‌های دیگر قرار داد.

data = ("Python", [10, 20, 30], ("A", "B"))
print(data)

تاپل تک‌عضوی (Single Item Tuple)

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

number = (5,)
print(type(number))

خروجی:

<class 'tuple'>
اما اگر به این صورت بنویسیم: 
number = (5)
print(type(number))

خروجی:

<class 'int'>
یعنی وجود کاما مشخص می‌کند که این یک تاپل است.

ایجاد تاپل بدون پرانتز

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

colors = "Red", "Green", "Blue"
print(colors)
print(type(colors))

خروجی:

('Red', 'Green', 'Blue')
<class 'tuple'>

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

دسترسی به عناصر تاپل (Indexing)

هر عنصر در تاپل دارای یک شماره یا اندیس (Index) است. شماره‌گذاری از صفر شروع می‌شود.

fruits = ("Apple", "Banana", "Orange", "Mango")
print(fruits[0])
print(fruits[2])

خروجی:

Apple
Orange

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

print(fruits[-1])
print(fruits[-2])

خروجی:

Mango
Orange

برش تاپل (Slicing)

مانند لیست، می‌توان بخشی از عناصر تاپل را با عملگر برش (:) استخراج کرد.

numbers = (10, 20, 30, 40, 50, 60)
print(numbers[1:4])

خروجی:

(20, 30, 40)

چند مثال دیگر:

print(numbers[:3])
print(numbers[2:])
print(numbers[-3:])

خروجی:

(10, 20, 30)
(30, 40, 50, 60)
(40, 50, 60)
نکته

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

پیمایش تاپل با حلقه (Loop)

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

fruits = ("Apple", "Banana", "Orange")
for fruit in fruits:
    print(fruit)

خروجی:

Apple
Banana
Orange

اگر علاوه بر مقدار، به شماره اندیس هر عنصر نیز نیاز داشته باشید، می‌توانید از تابع enumerate() استفاده کنید.

fruits = ("Apple", "Banana", "Orange")
for index, value in enumerate(fruits):
    print(index, value)

خروجی:

0 Apple
1 Banana
2 Orange

بررسی وجود یک مقدار در تاپل

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

colors = ("Red", "Green", "Blue")
print("Green" in colors)
print("Black" in colors)

خروجی:

True
False

همچنین می‌توان با not in بررسی کرد که مقداری در تاپل وجود ندارد.

print("Yellow" not in colors)

خروجی:

True

طول تاپل

تابع len() تعداد عناصر موجود در تاپل را برمی‌گرداند.

numbers = (10, 20, 30, 40, 50)
print(len(numbers))

خروجی:

5

متدهای مهم تاپل

برخلاف لیست که متدهای زیادی دارد، تاپل فقط دو متد دارد. دلیل آن نیز تغییرناپذیر بودن تاپل است.

متد count()

این متد تعداد تکرار یک مقدار را در تاپل محاسبه می‌کند.

numbers = (5, 3, 8, 5, 2, 5)
print(numbers.count(5))

خروجی:

3
 

متد index()

این متد محل اولین مشاهده یک مقدار را برمی‌گرداند.

numbers = (10, 20, 30, 40)
print(numbers.index(30))

خروجی:

2

اگر مقدار موردنظر در تاپل وجود نداشته باشد، برنامه با خطای ValueError متوقف می‌شود.

الحاق تاپل‌ها

اگرچه نمی‌توان عناصر یک تاپل را تغییر داد، اما می‌توان دو تاپل را به یکدیگر متصل کرد و یک تاپل جدید ساخت.

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
result = tuple1 + tuple2
print(result)

خروجی:

(1, 2, 3, 4, 5, 6)

تکرار تاپل

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

numbers = (1, 2)
print(numbers * 3)

خروجی:

(1, 2, 1, 2, 1, 2)

Packing و Unpacking در تاپل

یکی از قابلیت‌های بسیار کاربردی تاپل در پایتون، Packing و Unpacking است.

Packing

قرار دادن چند مقدار در یک تاپل را Packing می‌گویند.

person = "Ali", 25, "Tehran"
print(person)

خروجی:

('Ali', 25, 'Tehran')

در این مثال، سه مقدار داخل یک تاپل قرار گرفته‌اند.

Unpacking

در Unpacking، عناصر یک تاپل را مستقیماً داخل چند متغیر قرار می‌دهیم.

person = ("Ali", 25, "Tehran")
name, age, city = person
print(name)
print(age)
print(city)

خروجی:

Ali
25
Tehran

تعداد متغیرها باید دقیقاً برابر با تعداد عناصر تاپل باشد؛ در غیر این صورت خطا ایجاد می‌شود.

استفاده از * در Unpacking

اگر تعداد عناصر زیاد باشد، می‌توان از عملگر * برای دریافت چند عنصر به صورت یک لیست استفاده کرد.

numbers = (10, 20, 30, 40, 50)
first, *middle, last = numbers
print(first)
print(middle)
print(last)

خروجی:

10
[20, 30, 40]
50
نکته

هنگام استفاده از * در Unpacking، متغیر ستاره‌دار همیشه یک لیست (List) خواهد بود، نه یک تاپل.

تفاوت لیست (List) و تاپل (Tuple)

ویژگی List (لیست) Tuple (تاپل)
علامت [] ()
امکان تغییر عناصر دارد ندارد
افزودن و حذف عنصر بله خیر
ترتیب عناصر حفظ می‌شود حفظ می‌شود
دسترسی با اندیس (Index) دارد دارد
امکان وجود عناصر تکراری دارد دارد
سرعت اجرا کمتر بیشتر
مصرف حافظه بیشتر کمتر
متدهای قابل استفاده زیاد (مانند append()، remove()، sort()) فقط count() و index()
کاربرد اصلی داده‌های قابل تغییر داده‌های ثابت و تغییرناپذیر

📝 تمرین 1

یک تاپل شامل نام پنج شهر ایجاد کنید. سپس:

  • اولین شهر را چاپ کنید.
  • آخرین شهر را چاپ کنید.
  • سه شهر اول را با استفاده از Slicing نمایش دهید.

📝 تمرین 2

یک تاپل شامل اعداد زیر ایجاد کنید:

(18, 20, 15, 20, 17, 20)

سپس:

  • تعداد تکرار عدد 20 را با استفاده از count() نمایش دهید.
  • اندیس اولین عدد 17 را با استفاده از index() چاپ کنید.
  • تعداد عناصر تاپل را با استفاده از len() نمایش دهید.

📝 تمرین 3

یک تاپل شامل اطلاعات زیر ایجاد کنید:

  • نام
  • سن
  • شهر

سپس با استفاده از Unpacking، مقادیر را در سه متغیر جداگانه قرار داده و هر کدام را در یک خط چاپ کنید.

📝 تمرین 4

دو تاپل زیر را ایجاد کنید:

(1, 2, 3)

و

(4, 5, 6)

سپس:

  • آن‌ها را با عملگر + به یکدیگر متصل کنید.
  • تاپل جدید را با استفاده از عملگر * سه بار تکرار کنید.
  • نتیجه را چاپ کنید.

📝 تمرین 5

ابتدا یک List و یک Tuple با مقادیر یکسان ایجاد کنید.

سپس:

  • سعی کنید مقدار اولین عنصر هر دو را تغییر دهید.
  • نتیجه اجرای برنامه را مشاهده کنید.
  • توضیح دهید چرا تغییر در لیست انجام می‌شود اما در تاپل خطا ایجاد می‌شود.

دیکشنری در پایتون

در درس بعدی با دیکشنری (Dictionary) آشنا می‌شوید؛ ساختاری قدرتمند که داده‌ها را به صورت کلید (Key) و مقدار (Value) ذخیره می‌کند و یکی از پرکاربردترین ابزارهای برنامه‌نویسی در پایتون است.

گام بعدی : دیکشنری در پایتون

برای شرکت در آزمون آماده‌اید؟

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

شروع کار با Django

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

ادامه مطلب »

عملیات CRUD در SQLite

عملیات CRUD درSQLite در بخش قبل با مفهوم پایگاه داده، SQLite و نحوه اتصال پایتون به پایگاه داده آشنا شدیم.

ادامه مطلب »

توابع در پایتون

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

ادامه مطلب »

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

مجموعه (Set) در پایتون به زبان ساده، Set مجموعه‌ای از عناصر منحصربه‌فرد (Unique) است که ترتیب مشخصی ندارد و اجازه

ادامه مطلب »

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

تاپل (Tuple) در پایتون بعد از آشنایی با لیست (List)، نوبت به یکی دیگر از ساختارهای داده در پایتون یعنی

ادامه مطلب »

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

لیست (List) در پایتون پرکاربردترین ساختار داده​ تا اینجا یاد گرفتید که هر متغیر فقط یک مقدار را در خود

ادامه مطلب »

آموزش نصب پایتون

آموزش نصب پایتون و ابزارهای موردنیاز (راهنمای کامل برای ویندوز) اگر تصمیم گرفته‌اید برنامه‌نویسی را یاد بگیرید، احتمالاً نام زبان

ادامه مطلب »