تاپل در پایتون یک مجموعه ترتیبی و غیر قابل تغییر از مقادیر است. به کمک تاپلها میتوانیم چندین مقدار از نوعهای دادهای مختلف را در یک متغیر ذخیره کرده و روی آنها عملیات انجام دهیم. در این مقاله با ساختار دادهای tuple در پایتون و ترفندهای آن آشنا خواهید شد.
تاپل یک نوع کالکشن (collection) است که میتواند به تعداد نامحدودی مقدار را در خود نگهداری کند.
از نظر تعریف و استفاده، مشابه لیست در پایتون است. البته تفاوتیهای واضحی دارند که جلوتر با آنها آشنا میشویم. اگر با لیستها آشنا نیستید، پیشنهاد میکنم کار با listها را حتماً یاد بگیرید چون بسیار کاربردی هستند.
بر خلاف لیستها، مقادیر تعریف شده به صورت تاپل، غیر قابل تغییر هستند. یعنی وقتی یک تاپل با سه مقدار را ایجاد میکنیم، مقدار و تعداد آنها را نمیتوانیم تغییر دهیم.
تعریف تاپل در پایتون
برای تعریف tuple در پایتون، عموماً از علامت پرانتز باز و بسته در ابتدا و انتهای آن استفاده میشود. مقادیر مورد نظرمان را هم با کاما (ویرگول انگلیسی یا ,
) از یکدیگر جدا میکنیم.
در زیر یک تاپل با پنج مقدار ایجاد کردهایم.
my_tuple = (217, "Omid", 23.471, 9, "SabzDanesh")
همانطور که میبینید، هر کدام از اعضای تاپل میتواند از نوع دادهای متفاوتی باشد. در این مثال از عدد و رشته در پایتون استفاده کرده بودیم؛ اما میتوانیم شئ (object) لیست یا یک تاپل دیگر نیز به کار ببریم!
اعضای تاپل لزوماً متفاوت از هم نیستند! مثلاً در زیر سه عدد را در یک تاپل قرار میدهیم.
tpl = (17, 14, 20)
اگر یک علامت پرانتز باز و بسته برای متغیری قرار دهیم، یک تاپل خالی درست کردهایم.
empty_tuple = ()
دقت داشته باشید که اگر تاپل ما شامل تنها یک عضو باشد، باید حتماً پس از تعریف عضو، علامت کاما نیز قرار دهیم.
test = (27,)
اگر علامت ,
را پس از عضو تکی در tuple قرار ندهیم، آن متغیر دیگر یک تاپل نبوده و نوعش از همان نوع عنصر عضو خواهد شد.
در تصویر زیر، نام سایت را به صورت رشته در علامت پرانتز قرار داده و به متغیر test انتساب دادهایم. وقتی نوع متغیر را بررسی میکنیم، میبینیم که رشته (string) تشخیص داده میشود.
دسترسی به اعضای تاپل
مشابه لیست یا رشته که دارای اندیس برای دسترسی به اعضای خود هستند، برای دسترسی به عناصر تاپل در پایتون از اندیسها (ایندکس یا index) استفاده میکنیم.
برای دسترسی به عضو 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')
ویرایش تاپل در پایتون
تاپلها تغییر ناپذیر هستند. در انگلیسی به آنها 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
دقت کنید که اگر پس از حذف تاپل، آن را صدا بزنیم، با خطایی مشابه زیر مواجه خواهیم شد. چون چنین متغیری در برنامه وجود ندارد.
اگر میخواهید مثالهای بیشتری در اینباره ببینید، به این سایت انگلیسی مراجعه کنید.
ترفندهای کار با تاپل پایتون
به کمک عملگرها و عبارات کلیدی میتوانیم حرفهایتر با 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
جمعبندی کوتاه
در این آموزش با تاپلها در پایتون آشنا شدیم. در برخی منابع فارسی، از تاپل با عنوان چندتایی نیز اسم برده شده است. tuple را با پرانتز مشخص میکنیم. اعضا و طول آن تغییر ناپذیر است و اگر بخواهیم عضو جدیدی به آن اضافه کنیم، از نظر فنی باید یک تاپل جدید ایجاد کنیم.