در درس هفدهم دوره آموزش رایگان پایتون در مورد لیست ها در پایتون صحبت کردیم. در درس امروز می خواهیم در مورد تاپل ها در پایتون صحبت کنیم. تاپل در پایتون، همانند یک لیست، یک مجموعه از اشیاء پایتون است. دنبالهای از مقادیر ذخیرهشده در یک تاپل میتواند از هر نوعی باشد و این مقادیر با اعداد صحیح شاخصگذاری (اندیس – index) میشوند.
مقادیر یک تاپل به صورت نوشتاری با ‘کاما’ جدا میشوند. با اینکه ضروری نیست، اما متداولتر است تا یک تاپل را با بستن دنبالهی مقادیر در پرانتز تعریف کنیم. این کار به درک آسانتر تاپل ها در پایتون کمک میکند.
ساخت یک تاپل
در پایتون، تاپلها (Tuples) با قرار دادن یک دنباله از مقادیر که توسط ‘کاما’ جدا شدهاند، با یا بدون استفاده از پرانتز برای گروهبندی دادهها، ایجاد میشوند.
توجه: ایجاد تاپل پایتون بدون استفاده از پرانتز به عنوان Tuple Packing شناخته میشود.
برنامه پایتون برای نمایش افزودن عناصر به یک تاپل.
# Creating an empty Tuple Tuple1 = () print("Initial empty Tuple: ") print(Tuple1) # Creating a Tuple # with the use of string Tuple1 = ('datayad', 'For') print("\nTuple with the use of String: ") print(Tuple1) # Creating a Tuple with # the use of list list1 = [1, 2, 4, 5, 6] print("\nTuple using List: ") print(tuple(list1)) # Creating a Tuple # with the use of built-in function Tuple1 = tuple('datayad') print("\nTuple with the use of function: ") print(Tuple1)
خروجی:
Initial empty Tuple: () Tuple with the use of String: ('datayad', 'For') Tuple using List: (1, 2, 4, 5, 6) Tuple with the use of function: ('d', 'a', 't', 'a', 'y', 'a', 'd')
ایجاد یک تاپل با انواع دادههای مختلف
تاپل ها در پایتون میتوانند شامل هر تعداد عنصر و هر نوع دادهای (مانند رشتهها، اعداد صحیح، لیست و غیره) باشند.
همچنین میتوان با یک عنصر تاپل ایجاد کرد، اما این کمی مشکل است. زیرا داشتن یک عنصر در پرانتز کافی نیست، و باید یک ‘کاما’ در انتها وجود داشته باشد تا آن را به تاپل تبدیل کند.
# Creating a Tuple # with Mixed Datatype Tuple1 = (5, 'Welcome', 7, 'datayad') print("\nTuple with Mixed Datatypes: ") print(Tuple1) # Creating a Tuple # with nested tuples Tuple1 = (0, 1, 2, 3) Tuple2 = ('python', 'datayad') Tuple3 = (Tuple1, Tuple2) print("\nTuple with nested tuples: ") print(Tuple3) # Creating a Tuple # with repetition Tuple1 = ('datayad',) * 3 print("\nTuple with repetition: ") print(Tuple1) # Creating a Tuple # with the use of loop Tuple1 = ('datayad') n = 5 print("\nTuple with a loop") for i in range(int(n)): Tuple1 = (Tuple1,) print(Tuple1)
خروجی:
Tuple with Mixed Datatypes: (5, 'Welcome', 7, 'datayad') Tuple with nested tuples: ((0, 1, 2, 3), ('python', 'datayad')) Tuple with repetition: ('datayad', 'datayad', 'datayad') Tuple with a loop ('datayad',) (('datayad',),) ((('datayad',),),) (((('datayad',),),),) ((((('datayad',),),),),)
پیچیدگیها برای ایجاد تاپل:
پیچیدگی زمانی: O(1)
فضای کمکی: O(n)
دسترسی به تاپل ها در پایتون
تاپلها غیرقابل تغییر (immutable) هستند و معمولاً شامل یک دنباله از عناصر مختلف هستند که از طریق باز کردن (Unpacking) یا شاخصگذاری (یا حتی با ویژگی در مورد تاپلهای نامگذاریشده) به آنها دسترسی پیدا میکنیم.
لیستها قابل تغییر (mutable) هستند و عناصر آنها معمولاً همگن هستند و با استفاده از حلقه بر روی لیست به عناصر آن دسترسی پیدا میکنیم.
توجه: در باز کردن تاپل، تعداد متغیرها در سمت چپ تساوی باید برابر با تعداد مقادیر در تاپل دادهشده باشد.
# Accessing Tuple # with Indexing Tuple1 = tuple("datayad") print("\nFirst element of Tuple: ") print(Tuple1[0]) # Tuple unpacking Tuple1 = ("datayad", "For", "you") # This line unpack # values of Tuple1 a, b, c = Tuple1 print("\nValues after unpacking: ") print(a) print(b) print(c)
خروجی:
First element of Tuple: d Values after unpacking: datayad For you
پیچیدگیها برای دسترسی به عناصر در تاپل:
پیچیدگی زمانی: O(1)
پیچیدگی فضایی: O(1)
اتصال (Concatenation) تاپلها
اتصال تاپل فرآیند ادغام دو یا چند تاپل است. اتصال با استفاده از عملگر ‘+’ انجام میشود. همواره اتصال تاپلها از انتهای تاپل اصلی انجام میشود. عملیات حسابی دیگر روی تاپلها اعمال نمیشود.
توجه – تنها انواع داده یکسان با استفاده از اتصال ترکیب میشوند، اگر یک لیست و یک تاپل ترکیب شوند، خطا ایجاد میشود.
# Concatenation of tuples Tuple1 = (0, 1, 2, 3) Tuple2 = ('datayad', 'For', 'datayad') Tuple3 = Tuple1 + Tuple2 # Printing first Tuple print("Tuple 1: ") print(Tuple1) # Printing Second Tuple print("\nTuple2: ") print(Tuple2) # Printing Final Tuple print("\nTuples after Concatenation: ") print(Tuple3)
خروجی:
Tuple 1: (0, 1, 2, 3) Tuple2: ('datayad', 'For', 'datayad') Tuples after Concatenation: (0, 1, 2, 3, 'datayad', 'For', 'datayad')
پیچیدگیها برای اتصال تاپلها:
پیچیدگی زمانی: O(1)
پیچیدگی فضایی: O(1)
برش تاپل
برش یک تاپل برای دریافت یک محدوده خاص یا برش از عناصر فرعی تاپل انجام میشود. برش همچنین میتواند برای لیستها و آرایهها نیز انجام شود. شاخصگذاری در یک لیست به یک عنصر تکی منجر میشود در حالی که برش امکان به دست آوردن یک مجموعه از عناصر را فراهم میکند.
توجه – مقادیر کاهشی منفی میتوانند برای برعکس کردن توالی تاپلها استفاده شود.
# Slicing of a Tuple # Slicing of a Tuple # with Numbers Tuple1 = tuple('DATAYADFORYOU') # Removing First element print("Removal of First Element: ") print(Tuple1[1:]) # Reversing the Tuple print("\nTuple after sequence of Element is reversed: ") print(Tuple1[::-1]) # Printing elements of a Range print("\nPrinting elements between Range 4-9: ") print(Tuple1[4:9])
خروجی:
Removal of First Element: ('A', 'T', 'A', 'Y', 'A', 'D', 'F', 'O', 'R', 'Y', 'O', 'U') Tuple after sequence of Element is reversed: ('U', 'O', 'Y', 'R', 'O', 'F', 'D', 'A', 'Y', 'A', 'T', 'A', 'D') Printing elements between Range 4-9: ('Y', 'A', 'D', 'F', 'O')
پیچیدگیها برای گذر/جستجوی عناصر در تاپلها:
پیچیدگی زمانی: O(1)
پیچیدگی فضایی: O(1)
حذف یک تاپل
تاپلها غیرقابل تغییر هستند و بنابراین اجازه حذف یک بخش از آن را نمیدهند. اما با استفاده از متد ()del، کل تاپل حذف میشود.
توجه – چاپ تاپل پس از حذف منجر به ایجاد خطا میشود.
# Deleting a Tuple Tuple1 = (0, 1, 2, 3, 4) del Tuple1 print(Tuple1)
خروجی:
Traceback (most recent call last): File “/home/efa50fd0709dec08434191f32275928a.py”, line 7, in print(Tuple1) NameError: name ‘Tuple1’ is not defined
متدهای داخلی
روش داخلی |
توضیحات |
index() |
در تاپل جستجو کرده و ایندکس مقدار دادهشده که در دسترس است را بازمیگرداند |
count() |
فراوانی وقوع یک مقدار مشخص را بازمیگرداند |
توابع داخلی
تابع داخلی |
توضیحات |
all() |
اگر همه عناصر true باشند یا اگر تاپل خالی باشد، True را بازمیگرداند |
any() |
اگر هر عنصری از تاپل true باشد، True را بازمیگرداند. اگر تاپل خالی باشد، False را بازمیگرداند |
len() |
طول تاپل یا اندازه تاپل را بازمیگرداند |
enumerate() |
شی enumerate تاپل را بازمیگرداند |
max() |
عنصر ماکزیمم تاپل دادهشده را بازمیگرداند |
min() |
عنصر مینیمم تاپل دادهشده را بازمیگرداند |
sum() |
جمع اعداد در تاپل را بازمیگرداند |
sorted() |
عناصر ورودی در تاپل را مرتب کرده و لیست جدید مرتبشده را بازمیگرداند |
tuple() |
یک شی قابل تکرار را به یک تاپل تبدیل میکند |
مقایسه لیست و تاپل
تشابهات |
تفاوتها |
توابعی که میتوانند برای هر دو لیست و تاپل استفاده شوند: ()len()، max()، min()، sum()، any()، all()، sorted |
متدهایی که نمیتوانند برای تاپل استفاده شوند: ()append()، insert()، remove()، pop()، clear()، sort()، reverse |
متدهایی که میتوانند برای هر دو لیست و تاپل استفاده شوند: count()، index() |
معمولاً ‘تاپلها’ را برای انواع دادههای مختلف و ‘لیستها’ را برای انواع دادههای مشابه استفاده میکنیم. |
تاپلها میتوانند در لیستها ذخیره شوند. |
حلقه زدن روی یک ‘تاپل’ سریعتر از یک ‘لیست’ است. |
لیستها میتوانند در تاپلها ذخیره شوند. |
لیستها’ قابل تغییر هستند در حالی که ‘تاپلها’ غیرقابل تغییر هستند. |
هر دو ‘تاپلها’ و ‘لیستها’ میتوانند در یکدیگر تو در تو شوند. |
تاپلهایی که شامل عناصر غیرقابل تغییر هستند میتوانند به عنوان یک کلید برای یک دیکشنری استفاده شوند. |