تعریف تاپل در پایتون
تعریف تاپل در پایتون مشابه تعریف لیست است با این تفاوت که به جای براکت از پرانتز استفاده میشود. دسترسی
به آیتمهای تاپل هم مثل لیستها با استفاده از اندیس عناصر صورت میگیرد. برای مثال، اگر مستطیلی داشته باشیم
که ابعادش باید ثابت بماند، میتوانیم ابعاد مستطیل را در یک تاپل ذخیره کنیم.
tuples.py
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
در اینجا ابتدا یک تاپل با نام dimensions تعریف شده که دو مقدار عددی را نگه میدارد. همانطور که میبینید،
ساخت یک تاپل مشابه ساخت یک لیست است اما با این تفاوت که بهجای براکت از پرانتز استفاده میشود. سپس، مشابه
آنچه در مورد لیستها هم داشتیم، با استفاده از اندیس به عناصر تاپل دسترسی پیدا کرده و آنها را چاپ کردهایم.
نتیجه به صورت زیر خواهد بود.
200
50
اجازه دهید ببینیم چه اتفاقی میافتد اگر سعنی کنیم آیتمهای یک تاپل را تغییر دهیم.
tuples.py
dimensions = (200, 50)
dimensions[0] = 250
اگر این کد را اجرا کنیم، با خطا مواجه میشویم و پایتون به ما میگوید که امکان تغییر مقدار یک تاپل وجود ندارد
و چنین کاری مجاز نیست.
Traceback (most recent call last):
File "tuples.py", line 2, in
dimensions[0] = 250
TypeError: 'tuple' object does not support item assignment
توجه داشته باشید که نغییرناپدیری تاپلها منافاتی با این موضوع ندارد که مقدار متغیرهای پایتون میتواند تغییر
کند. در مثال بالا دیدم که یک تاپل نمیتواند تغییر کند و immutable یا تغییرناپذیر است اما در مثال زیر ما یک
مقدار جدید را به متغیری که یک تاپل را نگه میدارد، دادهایم که هیچ منعی ندارد.
tuples.py
dimensions = (200, 50)
print(dimensions)
dimensions = (400, 100)
print(dimensions)
اگر این کد را اجرا کنید، نتیجهی زیر را مشاهده خواهید کرد.
(200, 50)
(400, 100)
از نظر فنی، تاپلها با استفاده از کاما ساخته می شوند و نیازی به پرانتز نیست اما افزودن پرانتز باعث
میشود که تاپلها آشناتر به نظر برسند و خواناتر باشند. در ضمن، یک تاپل که فقط شامل یک عنصر باشد به صورت
(element,) ساخته میشود. برای مثال (3,) یک تاپل تکعضوی است که فقط شامل یک مقدار عددی است. البته ساخت یک
تاپل تکعضوی چیزی نیست که خیلی معنایی داشته باشد اما این احتمال هنگامی که تاپل به صورت خودکار ساخته میشود،
وجود دارد.
عملگر اسلایس ( : ) که بخشی از یک کالکشن را استخراج میکند، روی تاپلها هم کار میکند. نحوهی استفاده از این
عملگر روی تاپلها کاملاً مشابه لیستهاست و هیچ تفاوتی ندارد.
پیمایش تاپلها با حلقه for
تاپل هم مانند لیست یک کالکشن است و بنابراین، میتوان با استفاده از حلقهی for روی آن پیمایش کرد.
slices.py
my_tuple = (1, 2, 3, 4)
for item in my_tuple:
print(item)
در نتیجهی اجرای این کد، اعداد 1 تا 4 چاپ میشوند.
1
2
3
4
برای تبدیل سایر کالکشنها (از جمله لیستها) به تاپل، میتوانیم از تابعی به نام tuple() استفاده کنیم. کافیست
کالکشن مورد نظر را به عنوان آرگومان به این متد پاس کنیم. یادآوری میکنم که برای لیستها هم تابعی با نام list()
همین کار را انجام میدهد.
tuples.py
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
print(my_tuple)
نتیجهی اجرای این کد به صورت زیر خواهد بود.
(1, 2, 3)