Tuple در پایتون چیست؟
در پایتون، Tuple یا چندتایی یکی از ساختارهای دادهای مهم برای نگهداری چند مقدار در کنار یکدیگر است. Tuple شباهت زیادی به List دارد، اما یک تفاوت اساسی میان آنها وجود دارد: Tuple تغییرناپذیر است.
یعنی پس از ایجاد یک Tuple، نمیتوان عناصر آن را مستقیماً تغییر داد، حذف کرد یا عنصر جدیدی به آن اضافه کرد. مستندات رسمی Python نیز Tuple را یک دنباله تغییرناپذیر معرفی میکند.
برای مثال:
student = ("Ali", 20, 18.5)
در این مثال، سه مقدار مختلف در یک Tuple قرار گرفتهاند.
چگونه در پایتون Tuple ایجاد کنیم؟
برای ساخت Tuple در پایتون معمولاً مقادیر با کاما از یکدیگر جدا میشوند. استفاده از پرانتز رایج است، اما برای Tupleهای غیرخالی، خود کاما نقش اصلی را در ایجاد Tuple دارد.
numbers = (10, 20, 30, 40)
همچنین میتوان آن را بدون پرانتز نوشت:
numbers = 10, 20, 30, 40
برای خوانایی بیشتر، استفاده از پرانتز پیشنهاد مناسبی است.
ساخت Tuple خالی
برای ایجاد یک Tuple خالی کافی است از دو پرانتز استفاده کنید:
empty_tuple = ()
میتوان نوع آن را بررسی کرد:
type(empty_tuple)
خروجی:
ساخت Tuple تکعضوی
ایجاد Tuple تکعضوی یک نکته مهم دارد. باید بعد از مقدار، کاما قرار دهید.
student = ("Ali",)
اگر کاما را حذف کنیم:
student = ("Ali")
پایتون این عبارت را یک رشته درون پرانتز در نظر میگیرد، نه Tuple.
برای بررسی:
type(student)
در حالت اول خروجی tuple و در حالت دوم str خواهد بود.
ساخت Tuple با تابع ()tuple
روش دیگر برای ایجاد Tuple، استفاده از تابع داخلی ()tuple است.
برای مثال:
numbers = tuple([1, 2, 3, 4])
print(numbers)
خروجی:
(1, 2, 3, 4)
همچنین میتوان یک رشته را به Tuple تبدیل کرد:
letters = tuple("Python")
print(letters)
خروجی:
('P', 'y', 't', 'h', 'o', 'n')
تابع ()tuple میتواند یک شیء قابل پیمایش را دریافت کند و عناصر آن را در قالب Tuple قرار دهد.
تفاوت Tuple و List در پایتون
یکی از مهمترین پرسشها برای کاربران تازهکار این است که چرا وقتی List وجود دارد، باید از Tuple استفاده کنیم؟
پاسخ به تغییرپذیری مربوط میشود.
|
ویژگی |
Tuple |
List |
|
تغییرپذیری |
ندارد |
دارد |
|
نشانه رایج |
() |
[] |
|
تغییر عنصر |
امکانپذیر نیست |
امکانپذیر است |
|
مناسب برای |
دادههای ثابت |
دادههای قابل تغییر |
برای مثال:
numbers = [10, 20, 30]
numbers[0] = 100
در اینجا مقدار اول List تغییر میکند.
اما:
numbers = (10, 20, 30)
numbers[0] = 100
باعث ایجاد خطای TypeError میشود؛ زیرا عناصر Tuple قابل انتساب مجدد نیستند.
دسترسی به عناصر Tuple با Index
Tuple مانند List دارای ترتیب است. بنابراین میتوان با استفاده از Index به عناصر آن دسترسی پیدا کرد.
در پایتون، Index اولین عنصر از صفر شروع میشود.
colors = ("red", "green", "blue")
print(colors[0])
print(colors[1])
print(colors[2])
خروجی:
red
green
blue
برای دسترسی از انتهای Tuple نیز میتوان از Index منفی استفاده کرد:
print(colors[-1])
خروجی:
blue
در این روش، 1- آخرین عنصر را نشان میدهد.
Slicing در Tuple چیست؟
علاوه بر دسترسی به یک عنصر، میتوان بخشی از Tuple را نیز انتخاب کرد. این کار با Slicing انجام میشود.
numbers = (10, 20, 30, 40, 50)
print(numbers[1:4])
خروجی:
(20, 30, 40)
در عبارت numbers[1:4]، عنصر دارای Index شماره ۱ انتخاب میشود و انتخاب تا قبل از Index شماره ۴ ادامه پیدا میکند.
همچنین میتوان از ابتدا یا انتهای Tuple استفاده کرد:
print(numbers[:3])
print(numbers[2:])
Slicing نیز مانند Indexing برای Tuple قابل استفاده است، اما نتیجه آن همچنان یک Tuple خواهد بود.
آیا میتوان Tuple را تغییر داد؟
خیر. Tuple یک ساختار داده تغییرناپذیر است.
برای مثال:
numbers = (10, 20, 30)
numbers[0] = 100
این کد با خطای TypeError مواجه میشود.
دلیل آن ساده است؛ پایتون اجازه تغییر مستقیم عناصر یک Tuple را نمیدهد.
اما یک نکته ظریف وجود دارد. یک Tuple میتواند شامل اشیای تغییرپذیر مانند List باشد.
برای مثال:
data = ([1, 2], [3, 4])
data[0].append(5)
print(data)
خروجی:
([1, 2, 5], [3, 4])
در اینجا خود Tuple تغییر نکرده است. بلکه List موجود درون آن تغییر کرده است. مستندات Python نیز این تفاوت را بهصورت مشخص توضیح میدهد.
چگونه یک Tuple را جایگزین کنیم؟
اگرچه نمیتوان عناصر یک Tuple را تغییر داد، میتوان یک Tuple جدید ایجاد کرد و آن را به همان متغیر نسبت داد.
برای مثال:
numbers = (10, 20, 30)
numbers = (100, 200, 300)
print(numbers)
خروجی:
(100, 200, 300)
در واقع Tuple قبلی و Tuple جدید دو مقدار متفاوت هستند و فقط متغیر numbers اکنون به Tuple جدید اشاره میکند.
چند تابع کاربردی برای Tuple
برای کار با Tuple در پایتون چند تابع و متد کاربرد زیادی دارند.
تابع ()len
برای مشخص کردن تعداد عناصر:
numbers = (10, 20, 30, 40)
print(len(numbers))
خروجی:
4
عملگر in
برای بررسی وجود یک مقدار:
colors = ("red", "green", "blue")
print("green" in colors)
خروجی:
True
متد ()count
برای شمارش تعداد تکرار یک مقدار:
numbers = (1, 2, 2, 3, 2)
print(numbers.count(2))
خروجی:
3
متد ()index
برای پیدا کردن اولین موقعیت یک مقدار:
numbers = (10, 20, 30, 40)
print(numbers.index(30))
خروجی:
2
ترکیب Tupleها
میتوان دو یا چند Tuple را با استفاده از عملگر + با یکدیگر ترکیب کرد.
first = (1, 2, 3)
second = (4, 5, 6)
result = first + second
print(result)
خروجی:
(1, 2, 3, 4, 5, 6)
در این حالت نیز Tupleهای اولیه تغییر نمیکنند و یک Tuple جدید ساخته میشود.
Tuple Packing و Unpacking چیست؟
یکی از قابلیتهای کاربردی Tuple، قرار دادن چند مقدار در یک Tuple و سپس استخراج آنهاست.
برای مثال:
student = ("Ali", 20, 18.5)
در اینجا چند مقدار در یک Tuple قرار گرفتهاند.
حالا میتوانیم آنها را در متغیرهای جداگانه قرار دهیم:
name, age, score = student
print(name)
print(age)
print(score)
این عملیات را Sequence Unpacking مینامند. Python برای انجام آن نیاز دارد تعداد متغیرهای سمت چپ با تعداد عناصر قابل تخصیص مطابقت داشته باشد.
چه زمانی از Tuple استفاده کنیم؟
Tuple زمانی مفید است که مجموعهای از مقادیر دارید و نمیخواهید ساختار اصلی آن در طول اجرای برنامه تغییر کند.
برای مثال، مختصات یک نقطه را میتوان به شکل زیر ذخیره کرد:
point = (10, 25)
یا اطلاعات ثابت یک دانشآموز:
student = ("Sara", 21, "Computer Engineering")
Tuple در برنامههایی که دادههای ثابت یا چندمقداری دارند، ساختار مناسبی ایجاد میکند.
اشتباهات رایج هنگام کار با Tuple
چند اشتباه در شروع یادگیری Tuple بسیار رایج است:
• فراموش کردن کاما در Tuple تکعضوی
• تلاش برای تغییر مستقیم یک عنصر
• اشتباه گرفتن Tuple با List
• استفاده نادرست از Index
• تصور اینکه پرانتز بهتنهایی Tuple ایجاد میکند
مثلاً:
x = ("Python")
یک رشته است.
اما:
x = ("Python",)
یک Tuple تکعضوی است.
نکته اصلی این است که در ساخت Tuple، کاما اهمیت اساسی دارد.
جمعبندی
Tuple در پایتون یکی از ساختارهای دادهای مهم برای نگهداری مجموعهای مرتب و تغییرناپذیر از مقادیر است. میتوان Tuple را با پرانتز، جدا کردن مقادیر با کاما یا تابع ()tuple ایجاد کرد.
برای دسترسی به عناصر از Index و برای انتخاب بخشی از دادهها از Slicing استفاده میشود. برخلاف List، امکان تغییر مستقیم عناصر Tuple وجود ندارد.
همچنین Tuple از قابلیتهایی مانند ()len()، count()، index، ترکیب Tupleها و Unpacking پشتیبانی میکند. بنابراین یادگیری آن یکی از مباحث مهم در مسیر آموزش برنامه نویسی Python است.
اگر در حال یادگیری پایتون هستید، پیشنهاد میشود بعد از Tuple، ساختارهایی مانند List، Dictionary و Set را نیز یاد بگیرید.
میخواهید برنامهنویسی Python را اصولی یاد بگیرید؟
با شرکت در کارگاه آنلاین برنامهنویسی Python پژواک دانش، مباحث برنامهنویسی را از پایه تا مباحث کاربردی یاد بگیرید.