آموزش تاپل در پایتون و ترفندهای کار با tuple

تاپل در پایتون یک مجموعه ترتیبی و غیر قابل تغییر از مقادیر است. به کمک تاپل‌ها می‌توانیم چندین مقدار از نوع‌های داده‌ای مختلف را در یک متغیر ذخیره کرده و روی آن‌ها عملیات انجام دهیم. در این مقاله با ساختار داده‌ای tuple در پایتون و ترفندهای آن آشنا خواهید شد.

تاپل یک نوع کالکشن (collection) است که می‌تواند به تعداد نامحدودی مقدار را در خود نگهداری کند.

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

البته این دو نوع داده‌ای تفاوت‌های مشخصی دارند که با آن‌ها بیشتر آشنا می‌شویم.

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

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

برای تعریف tuple در پایتون، عموماً از علامت پرانتز باز و بسته در ابتدا و انتهای آن استفاده می‌شود. مقادیر مورد نظرمان را هم با کاما (ویرگول انگلیسی یا ,) از یکدیگر جدا می‌کنیم.

در زیر یک تاپل با پنج مقدار ایجاد کرده‌ایم.

my_tuple = (217, "Omid", 23.471, 9, "SabzDanesh")

همان‌طور که می‌بینید، هر کدام از اعضای تاپل می‌تواند از نوع داده‌ای متفاوتی باشد. در این مثال از عدد و رشته در پایتون استفاده کرده بودیم؛ اما می‌توانیم شئ (object) لیست یا یک تاپل دیگر نیز به کار ببریم!

اعضای تاپل لزوماً متفاوت از هم نیستند! مثلاً در زیر سه عدد را در یک تاپل قرار می‌دهیم.

tpl = (17, 14, 20)

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

empty_tuple = ()

دقت داشته باشید که اگر تاپل ما شامل تنها یک عضو باشد، باید حتماً پس از تعریف عضو، علامت کاما نیز قرار دهیم.

test = (27,)

اگر علامت , را پس از عضو تکی در tuple قرار ندهیم، آن متغیر دیگر یک تاپل نبوده و نوعش از همان نوع عنصر عضو خواهد شد.

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

تعریف تاپل تک عضوی در تاپل پایتون
تعریف تک عضو بدون کاما در تاپل

دسترسی به اعضای تاپل

مشابه لیست یا رشته که دارای اندیس برای دسترسی به اعضای خود هستند، برای دسترسی به عناصر تاپل در پایتون از اندیس‌ها (ایندکس یا indice) استفاده می‌کنیم.

برای دسترسی به عضو nاُم کافی است نام تاپل را نوشته و درون کروشه ([]) شماره اندیس خانه مورد نظر را بنویسیم.

اولین عضو یک تاپل دارای اندیس شماره صفر (0) و آخرین عضو آن (n اُمین) دارای اندیس n-1 است.

فرض کنید تاپل زیر را در اختیار داریم.

tpl = ("this", "is", "a", "test", "for", "tuples!")

برای دسترسی به عضو سوم این tuple باید اندیس 2 یا -4 را فراخوانی کنیم؛ به صورت زیر:

print( tpl[2] )

print( tpl[-4] )

دسترسی بازه‌ای به عناصر

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

tpl = ("this", "is", "a", "test", "for", "tuples!")
print( tpl[1:5] )

# Result:
# ('is', 'a', 'test', 'for')

در قطعه کد زیر، مثال‌های بیشتری برای دسترسی به اعضای تاپل به همین روش‌ها می‌بینید.

print( tpl[2:-1] )
# ('a', 'test', 'for')
print( tpl[-5:-1] )
# ('is', 'a', 'test', 'for')
print( tpl[-4:4] )
# ('a', 'test')
آموزش لیست در پایتون و کار با List

آموزش لیست در پایتون و کار با List

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

تاپل‌ها تغییر ناپذیر هستند. در انگلیسی به آن‌ها immutable گفته می‌شود. بنابراین نخواهیم توانست مشابه لیست‌ها اعضای یک تاپل را تغییر دهیم!

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

تلاش اشتباه برای تغییر عضو تاپل
خطای تغییر مقدار عنصر تاپل در پایتون

اساسی‌ترین تفاوت لیست با تاپل در پایتون همین است که به دلیل تغییرناپذیر بودن tuple نمی‌توانیم مقادیر آن را تغییر داده یا تعدادشان را کم و زیاد کنیم.

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

افزودن عضو جدید به tuple

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

دقت کنید که تاپل‌های قبلی نه حذف می‌شوند و نه تغییر می‌کنند، فقط با اعضای آن‌ها یک تاپل جدید ایجاد خواهد شد.

فرض کنید tuple1 و tuple2 را در اختیار داریم.

در کد زیر با عملگر جمع، این دو تاپل را تجمیع کرده و tuple3 را ایجاد می‌کنیم.

tuple1 = ( "Test", "Element" )
tuple2 = ( 11, 37, 23 )
tuple3 = tuple1 + tuple2

نتیجه الصاق دو تاپل (Concatenation) به صورت زیر می‌شود.

print( tuple3 )
# ('Test', 'Element', 11, 37, 23)

حذف عناصر تاپل

همان‌گونه که امکان تغییر یک عنصر در تاپل وجود ندارد، امکان حذف یک عنصر هم وجود ندارد. فقط می‌توانیم کل تاپل را حذف کنیم.

برای حذف تاپل در پایتون، از کلمه کلیدی del قبل از نام آن کمک می‌گیریم. با این کار، تمام اعضای تاپل و خود تاپل حذف خواهد شد.

tpl = ("Sara", "Elham", "Mohsen")
# Some Codes...
del tpl

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

حذف تاپل در پایتون با del
بررسی حذف تاپل در پایتون با دستور del

اگر می‌خواهید مثال‌های بیشتری در این‌باره ببینید، به این سایت انگلیسی مراجعه کنید.

ترفندهای کار با تاپل پایتون

به کمک عملگر‌ها و عبارات کلیدی می‌توانیم حرفه‌ای‌تر با tupleها کار کنیم. در ادامه چهار مورد از آن‌ها را با هم بررسی می‌کنیم.

اندازه تاپل با تابع len

تابع len() یک تاپل را به عنوان ورودی گرفته و تعداد اعضای موجود در آن را به ما بازمی‌گرداند.

tpl = ("Sara", "Elham", "Mohsen", "Omid")
len( tpl ) # 4

اتصال تاپل‌ها به یکدیگر

در اواسط آموزش، برای افزودن عضو جدید به تاپل، دو tuple را به یکدیگر وصل کردیم. به این کار الحاق یا اصطلاحاً کانکَت (Concat) گفته می‌شود.

برای این کار، بین دو یا چند تاپل مورد نظر، از علامت جمع ریاضی (+) استفاده می‌کنیم.

با این کار، تاپل‌ها به هم وصل شده و یک تاپل بزرگ‌تر شامل اعضای آن‌ها ایجاد می‌شود.

tuple1 = ( "Test", "Element" )
tuple2 = ( 11, 37, 23 )
tuple3 = tuple1[1:] + tuple2[:-1]
print( tuple3 )
# Result:
# ('Element', 11, 37)

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

فرض کنید یک تاپل با دو عضو دارید. می‌خواهید این اعضا را تکرار کرده و در یک تاپل جدید قرار دهید.

برای این کار از علامت ضرب ریاضی (*) استفاده می‌کنیم. فقط کافی است تاپل را در تعداد تکرار دلخواه خود ضرب کنیم. با این کار تاپلی جدید با تکرار دلخواه عناصر قبلی خواهیم داشت.

tpl = ("Sabz", "Danesh")
print( tpl*3 )
# Result:
# ('Sabz', 'Danesh', 'Sabz', 'Danesh', 'Sabz', 'Danesh')

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

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

خروجی این عبارت به صورت True یا False خواهد بود؛ پس می‌توان از آن در ساختارهای شرطی پایتون نیز استفاده کرد.

tpl = (17, 25, 32, 37, 42, 50)
print( 32 in tpl ) #True
print( 35 in tpl ) #False

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