تاپل در پایتون مجموعهای از اشیاء است که با کاما از هم جدا شدهاند. تاپل از نظر ایندکسبندی، داشتن اشیاء تو در تو، و قابلیت تکرار شبیه به لیست در پایتون است. اما تفاوت اصلی این دو در این است که تاپل تغییرناپذیر «Immutable» است، در حالی که لیست قابل تغییر «Mutable» است.قبل از شروع مثال اول در این بخش از مقاله، باید بدانیم که تاپل در پایتون نوع دادهای مشابه لیستها هست، اما تفاوت اصلی آنها این است که غیرقابل تغییر هستند. این ویژگی باعث میشود که تاپلها برای ذخیره دادههای ثابت و غیرقابل تغییر مناسب باشند.
مقدمه
تاپل در پایتون «Tuple» یک نوع دادهی ترتیبدار و غیرقابل تغییر «Immutable» است که برای ذخیره مجموعهای از مقادیر استفاده میشود. تاپلها مانند لیستها از اندیسگذاری پشتیبانی میکنند و میتوانند شامل انواع مختلف دادهها باشند، اما برخلاف لیست، پس از ایجاد، محتوای آنها قابل تغییر نیست. تاپلها با استفاده از پرانتز () تعریف میشوند و در مواقعی که نیاز به یک مجموعه داده ثابت و بدون تغییر باشد، کارایی بیشتری نسبت به لیستها دارند. علاوه بر این، تاپلها به دلیل تغییرناپذیری، عملکرد بهتری در برخی پردازشها داشته و در برابر تغییرات ناخواسته ایمنتر هستند.
# Note : In case of list, we use square # brackets []. Here we use round brackets () t = (10, 20, 30) print(t) print(type(t))
خروجی:
(۱۰, ۲۰, ۳۰) <class 'tuple'>
غیرقابل تغییر بودن تاپل چیست؟
غیرقابل تغییر بودن «Immutable» تاپل در پایتون به این معنی است که پس از ایجاد یک تاپل، نمیتوان مقدار یا ترتیب عناصر آن را تغییر داد.
برخی ویژگیهای تاپل در پایتون
- مانند لیستها، تاپلها مرتب هستند و میتوانیم به عناصر آنها با استفاده از مقدار ایندکس دسترسی پیدا کنیم.
- پس از ایجاد یک تاپل، نمیتوان آیتمی به آن اضافه کرد.
- نمیتوان تاپل را الحاق یا گسترش داد.
- نمیتوان آیتمی را از تاپل حذف کرد.
این ویژگی باعث میشود تاپلها در مواردی که دادهها نباید بهصورت ناخواسته تغییر کنند، گزینهی مناسبی باشند. همچنین، به دلیل ثابت بودن، تاپلها کارایی بهتری در برخی پردازشها دارند و در برابر تغییرات تصادفی ایمنتر هستند.
مثال:
t = (1, 2, 3, 4, 5) # tuples are indexed print(t[1]) print(t[4]) # tuples contain duplicate elements t = (1, 2, 3, 4, 2, 3) print(t) # updating an element t[1] = 100 print(t)
خروجی:
Traceback (most recent call last): File "./prog.py", line 12, in <module> TypeError: 'tuple' object does not support item assignment
دسترسی به مقادیر تاپل در پایتون
در پایتون، دو روش برای دسترسی به عناصر یک تاپل وجود دارد:
دسترسی به تاپل با استفاده از ایندکس مثبت
با استفاده از براکتهای مربعی «Square Brackets» میتوانیم مقادیر را از تاپل در پایتون دریافت کنیم.
t = (10, 5, 20) print("Value in t[0] = ", t[0]) print("Value in t[1] = ", t[1]) print("Value in t[2] = ", t[2])
خروجی:
Value in t[0] = 10 Value in t[1] = 5 Value in t[2] = 20
دسترسی به تاپل در پایتون با استفاده از ایندکس منفی
در مثال روش های قبلی از ایندکس مثبت برای دسترسی به مقدار در پایتون استفاده کردیم. در اینجا از ایندکس منفی درون براکتهای مربعی [ ] استفاده خواهیم کرد.
t = (10, 5, 20) print("Value in t[-1] = ", t[-1]) print("Value in t[-2] = ", t[-2]) print("Value in t[-3] = ", t[-3])
خروجی:
Value in t[-1] = 20 Value in t[-2] = 5 Value in t[-3] = 10
عملیات مختلف مرتبط تاپل در پایتون
در زیر عملیات مختلف مرتبط با تاپل در پایتون آورده شده است:
- پیمایش (Traversing)
- الحاق (Concatenation)
- تو در تویی (Nesting)
- تکرار (Repetition)
- برش (Slicing)
- حذف (Deleting)
- پیدا کردن طول (Finding the length)
- انواع دادههای مختلف با تاپلها
- تبدیل لیستها به تاپلها
- تاپلها در حلقه
پیمایش آیتمهای تاپل در پایتون
مانند پیمایش لیستها، میتوانیم با استفاده از حلقه for از داخل یک تاپل عبور کنیم.
# Define a tuple t = (1, 2, 3, 4, 5) # Traverse through each item in the tuple for x in t: print(x, end=" ")
خروجی:
۱ ۲ ۳ ۴ ۵
الحاق تاپل در پایتون
برای الحاق تاپل در پایتون ، از عملگر جمع (+) استفاده میکنیم.
# Code for concatenating 2 tuples t1 = (0, 1, 2, 3) t2 = ('python', 'program') # Concatenating above two print(t1 + t2)
خروجی:
(۰, ۱, ۲, ۳, 'python', 'program')
تو در تویی تاپل در پایتون
یک تاپل تو در تو در پایتون به معنی یک تاپل داخل تاپل دیگر است.
# Code for creating nested tuples t1 = (0, 1, 2, 3) t2 = ('python', 'program') t3 = (t1, t2) print(t3)
خروجی:
((۰, ۱, ۲, ۳), ('python', 'program'))
تکرار تاپل در پایتون
ما میتوانیم یک تاپل از چندین عنصر مشابه را از یک عنصر واحد در آن تاپل ایجاد کنیم.
# Code to create a tuple with repetition t = ('python',)*3 print(t)
خروجی:
('python', 'python', 'python')
اگر روش بالا را بدون استفاده از کاما امتحان کنید، خواهید دید که tuple3 به عنوان یک رشته pythonpythonpython نمایش داده میشود.
برش (Slicing) تاپل در پایتون
برش تاپل در پایتون به معنی تقسیم یک تاپل به تاپلهای کوچکتر با استفاده از روش ایندکسبندی است. در این مثال، ما تاپل را از ایندکس ۱ تا آخرین عنصر برش میدهیم. در دستور چاپ دوم، تاپل را با استفاده از ایندکس معکوس چاپ کردیم. و در دستور چاپ سوم، عناصر از ایندکس ۲ تا ۴ را چاپ کردیم.
# code to test slicing t = (0 ,1, 2, 3) print(t[1:]) print(t[::-1]) print(t[2:4])
خروجی:
(۱, ۲, ۳) (۳, ۲, ۱, ۰) (۲, ۳)
توجه: در برش در پایتون، ایندکس انتهایی که مشخص میکنید شامل نمیشود.
حذف یک تاپل در پایتون
در این مثال، ما از کلمه کلیدی del برای حذف یک تاپل استفاده میکنیم. خروجی به صورت ارور خواهد بود زیرا پس از حذف تاپل، یک خطای NameError دریافت میکنیم.
توجه: حذف عناصر فردی یک تاپل ممکن نیست، اما میتوانیم کل تاپل را با استفاده از کلمه کلیدی del حذف کنیم.
# Code for deleting a tuple t = ( 0, 1) del t print(t)
خروجی:
Traceback (most recent call last): File "./prog.py", line 5, in <module> NameError: name 't' is not defined
پیدا کردن طول یک تاپل در پایتون
برای پیدا کردن طول یک تاپل، میتوانیم از تابع ()len در پایتون استفاده کرده و تاپل را به عنوان پارامتر به آن بدهیم.
# Code for printing the length of a tuple t = ('python', 'program') print(len(t))
خروجی:
۲
انواع دادههای مختلف تاپل در پایتون
تاپل در پایتون ذاتاً ناهمگن هستند. به این معنا که تاپلها از عناصری با انواع دادههای مختلف پشتیبانی میکنند.
# tuple with different datatypes t = ("immutable", True, 23) print(t)
خروجی:
('immutable', True, 23)
تبدیل یک لیست به تاپل
ما میتوانیم یک لیست در پایتون را به تاپل تبدیل کنیم با استفاده از سازنده ()tuple و ارسال لیست به عنوان پارامتر به آن.
# Code for converting a list and a string into a tuple a = [0, 1, 2] t = tuple(a) print(t)
خروجی:
(۰, ۱, ۲)
تاپلها یک پارامتر واحد میگیرند که میتواند یک لیست، رشته، مجموعه یا حتی یک دیکشنری باشد (فقط کلیدها به عنوان عناصر گرفته میشوند) و آنها را به یک تاپل تبدیل میکنند.
تاپلها در حلقه
ما همچنین میتوانیم با استفاده از حلقهها یک تاپل با یک عنصر واحد در آن ایجاد کنیم.
# python code for creating tuples in a loop t = ('ps',) # Number of time loop runs n = 5 for i in range(int(n)): t = (t,) print(t)
خروجی:
(('ps',),) ((('ps',),),) (((('ps',),),),) ((((('ps',),),),),) (((((('ps',),),),),),)
روشهای مختلف ایجاد یک تاپل
- استفاده از پرانتز گرد (Round Brackets): میتوانیم تاپلها را با استفاده از پرانتز گرد ( ) ایجاد کنیم.
- بدون پرانتز: برای ایجاد یک تاپل میتوان از فاصلهها بدون نیاز به پرانتز استفاده کرد.
- سازنده تاپل (Tuple Constructor): میتوانیم از تابع ()tuple برای ایجاد یک تاپل استفاده کنیم.
- تاپل خالی: یک تاپل خالی میتوان با استفاده از ( ) ایجاد کرد.
- تاپل با یک عنصر: برای ایجاد یک تاپل با یک عنصر، باید از کاما در کنار عنصر استفاده کنیم، مثلا (۵,).
- استفاده از بستهبندی تاپل (Tuple Packing): تاپلها میتوانند از طریق بستهبندی مقادیر مختلف به یکدیگر ایجاد شوند.
t = ("ps", "Python") print(t)
خروجی:
('ps', 'Python')
استفاده از کاما برای جدا کردن مقادیر
برای ایجاد یک تاپل میتوانیم مقادیر مختلف را با استفاده از کاما از هم جدا کنیم. به عنوان مثال، میتوانیم مقادیر مختلف مانند ۱، ۲، ۳ و ۴ را با کاما از هم جدا کرده و در داخل پرانتز قرار دهیم.
# Creating a tuple without brackets t = 4, 5, 6 print(t) # Output: (4, 5, 6)
خروجی:
(۴, ۵, ۶)
استفاده از سازنده تاپل
برای ایجاد یک تاپل میتوانیم از سازنده ()tuple استفاده کنیم. این سازنده میتواند هر نوع دادهای مانند لیست یا رشته را به یک تاپل تبدیل کند.
# Creating a tuple using the tuple() constructor t = tuple([7, 8, 9]) print(t) # Output: (7, 8, 9)
خروجی:
(۷, ۸, ۹)
ایجاد یک تاپل خالی
برای ایجاد یک تاپل خالی، میتوانیم از پرانتز گرد ( ) بدون هیچ مقداری استفاده کنیم.
# Creating an empty tuple t = () print(t) # Output: ()
خروجی:
()
تاپل با یک عنصر
برای ایجاد یک تاپل با یک عنصر، باید از کاما در کنار عنصر استفاده کرد. به عنوان مثال، (۵,) یک تاپل با یک عنصر ۵ است.
# Creating a single-element tuple t = (10, ) # Comma is important here print(t) # Output: (10,) print(type(t)) # What if we do not use comma t = (10) # This an integer (not a tuple) print(t) print(type(t))
خروجی:
(۱۰,) <class 'tuple'> ۱۰ <class 'int'>
بستهبندی تاپل
بستهبندی تاپل به معنای قرار دادن مقادیر مختلف در یک تاپل بدون نیاز به پرانتز است. به عبارت دیگر، میتوان مقادیر را با استفاده از کاما جدا کرده و آنها را به صورت یک تاپل در نظر گرفت.
# Tuple packing a, b, c = 11, 12, 13 t = (a, b, c) print(t) # Output: (11, 12, 13)
خروجی:
(۱۱, ۱۲, ۱۳)
نتیجه گیری
تاپل در پایتون ساختار دادهای مشابه لیستها هستند، اما تفاوت اصلی آنها این است که غیرقابل تغییر «immutable» هستند. این بدان معناست که پس از ایجاد یک تاپل، نمیتوان آن را تغییر داد، به این معنی که نمیتوانیم عناصر آن را حذف یا به آنها افزوده کنیم. تاپل در پایتون میتواند انواع مختلف دادهها را در خود جای دهند و از ویژگیهایی مانند ایندکسبندی، برش، و تکرار پشتیبانی میکنند. علاوه بر این، تاپل در پایتون میتواند به راحتی از لیستها، رشتهها یا سایر دادهها با استفاده از سازنده ()tuple ایجاد شوند. به دلیل خصوصیت غیرقابل تغییر بودن، تاپلها به عنوان یک گزینه مناسب برای ذخیره دادههای ثابت در برنامهها مورد استفاده قرار میگیرند.