تاپل در برنامه نویسی پایتون
تاپل در برنامه نویسی پایتون
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، همه چیز را در مورد تاپل در برنامه نویسی پایتون (python tuple) خواهید آموخت. به طور خاص ، تاپل ها چیست، چگونه می توان آنها را ایجاد کرد، چه زمانی از آنها استفاده کرد و روش های مختلفی که باید با آنها آشنا باشید.
پیشنهاد ویژه : پکیج آموزش پایتون
در پایتون تاپل مشابه لیست است. تفاوت این دو در این است که ما نمی توانیم عناصر یک تاپل را تعیین کنیم در حالی که می توانیم عناصر یک لیست را تغییر دهیم.
ایجاد تاپل در پایتون
با قرار دادن همه موارد (عناصر) درون پرانتز ()، تاپل ها ایجاد می شوند و با با کاما از هم جدا موارد از هم می شوند. پرانتزها اختیاری است، با این حال استفاده از آنها روش خوبی است.
یک تاپل می تواند هر تعداد آیتم داشته باشد و ممکن است انواع مختلفی داشته باشد (عدد صحیح، ممیز شناور، لیست، رشته و غیره).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Different types of tuples # Empty tuple my_tuple = () print(my_tuple) # Tuple having integers my_tuple = (1, 2, 3) print(my_tuple) # tuple with mixed datatypes my_tuple = (1, "Hello", 3.4) print(my_tuple) # nested tuple my_tuple = ("mouse", [8, 4, 6], (1, 2, 3)) print(my_tuple) |
خروجی
1 2 3 4 |
() (1, 2, 3) (1, 'Hello', 3.4) ('mouse', [8, 4, 6], (1, 2, 3)) |
بدون استفاده از پرانتز نیز می توان یک تاپل ایجاد کرد. این به بسته بندی ( packing) تاپل معروف است.
1 2 3 4 5 6 7 8 9 |
my_tuple = 3, 4.6, "dog" print(my_tuple) # tuple unpacking is also possible a, b, c = my_tuple print(a) # 3 print(b) # 4.6 print(c) # dog |
خروجی
1 2 3 4 |
(3, 4.6, 'dog') 3 4.6 dog |
ایجاد یک تاپل با یک عنصر کمی مشکل است.
داشتن یک عنصر درون پرانتز کافی نیست. برای حل این مشکل ما به یک ویرگول انتهایی احتیاج داریم تا نشان دهیم که در واقع یک تاپل است.
1 2 3 4 5 6 7 8 9 10 |
my_tuple = ("hello") print(type(my_tuple)) # <class 'str'> # Creating a tuple having one element my_tuple = ("hello",) print(type(my_tuple)) # <class 'tuple'> # Parentheses is optional my_tuple = "hello", print(type(my_tuple)) # <class 'tuple'> |
خروجی
1 2 3 |
<class 'str'> <class 'tuple'> <class 'tuple'> |
دسترسی به عناصر تاپل در پایتون
روش های مختلفی وجود دارد که می توانیم به عناصر یک تاپل دسترسی پیدا کنیم.
1. اندیس گذاری
ما می توانیم از عملگر اندیس [] برای دسترسی به موردی در تاپل ستفاده کنیم، اندیس از 0 شروع می شود.
بنابراین، یک تاپل دارای 6 عنصر دارای اندیس های 0 تا 5 خواهد بود. تلاش برای دستیابی به اندیس خارج از محدوده شاخص تاپل (6،7 ، … در این مثال) باعث ایجاد یک IndexError می شود.
اندیس باید یک عدد صحیح باشد، بنابراین نمی توانیم از عدد ممیز شناور یا انواع دیگر استفاده کنیم. این امر منجر به TypeError می شود.
به همین ترتیب، به تاپل های تو در تو نیز دسترسی پیدا می شود، همانطور که در مثال زیر نشان داده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Accessing tuple elements using indexing my_tuple = ('p','e','r','m','i','t') print(my_tuple[0]) # 'p' print(my_tuple[5]) # 't' # IndexError: list index out of range # print(my_tuple[6]) # Index must be an integer # TypeError: list indices must be integers, not float # my_tuple[2.0] # nested tuple n_tuple = ("mouse", [8, 4, 6], (1, 2, 3)) # nested index print(n_tuple[0][3]) # 's' print(n_tuple[1][1]) # 4 |
خروجی
1 2 3 4 |
p t s 4 |
2. اندیس گذاری منفی
پایتون برای دنباله های خود اندیس گذاری منفی را امکان پذیر می کند.
اندیس 1- به آخرین مورد، و اندیس 2- به یکی به آخری اشاره دارد.
1 2 3 4 5 6 7 8 |
# Negative indexing for accessing tuple elements my_tuple = ('p', 'e', 'r', 'm', 'i', 't') # Output: 't' print(my_tuple[-1]) # Output: 'p' print(my_tuple[-6]) |
خروجی
1 2 |
t p |
3. برش زدن
با استفاده از عملگر برش “:” می توانیم به طیف وسیعی از موارد در یک تاپل دسترسی داشته باشیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Accessing tuple elements using slicing my_tuple = ('p','r','o','g','r','a','m','i','z') # elements 2nd to 4th # Output: ('r', 'o', 'g') print(my_tuple[1:4]) # elements beginning to 2nd # Output: ('p', 'r') print(my_tuple[:-7]) # elements 8th to end # Output: ('i', 'z') print(my_tuple[7:]) # elements beginning to end # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple[:]) |
خروجی
1 2 3 4 |
('r', 'o', 'g') ('p', 'r') ('i', 'z') ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') |
برش زدن را می توان با اندیس گذاری در بین عناصر را به خوبی درک کرد که در شکل زیر نشان داده شده است. بنابراین اگر می خواهیم به محدوده ای دسترسی پیدا کنیم، به اندیسی نیاز داریم که بخشی را از تاپل تقسیم کند.
تغییر یک تاپل در پایتون
برخلاف لیست ها، تاپل ها تغییرناپذیر هستند.
این بدان معنی است که عناصر یک تاپل پس از اختصاص دادن مقادیر قابل تغییر نیستند. اما، اگر عنصر خودش یک نوع داده قابل تغییر مانند لیست باشد، موارد تو در تو قابل تغییر است.
همچنین می توانیم به یک تاپل مقادیر مختلفی اختصاص دهیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Changing tuple values my_tuple = (4, 2, 3, [6, 5]) # TypeError: 'tuple' object does not support item assignment # my_tuple[1] = 9 # However, item of mutable element can be changed my_tuple[3][0] = 9 # Output: (4, 2, 3, [9, 5]) print(my_tuple) # Tuples can be reassigned my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple) |
خروجی
1 2 |
(4, 2, 3, [9, 5]) ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') |
ما می توانیم از عملگر + برای ترکیب دو تاپل استفاده کنیم. به این حالت concatenation یا الحاق می گویند.
همچنین می توانیم با استفاده از عملگر * عناصر را در یک تاپل به تعداد مشخصی تکرار کنیم.
هر دو عملگر + و * منجر به یک ایجاد یک تاپل جدید می شود.
1 2 3 4 5 6 7 |
# Concatenation # Output: (1, 2, 3, 4, 5, 6) print((1, 2, 3) + (4, 5, 6)) # Repeat # Output: ('Repeat', 'Repeat', 'Repeat') print(("Repeat",) * 3) |
خروجی
1 2 |
(1, 2, 3, 4, 5, 6) ('Repeat', 'Repeat', 'Repeat') |
حذف تاپل در برنامه نویسی پایتون
همانطور که در بالا گفته شد، ما نمی توانیم عناصر درون یک تاپل را تغییر دهیم. این بدان معناست که ما نمی توانیم عناصر را از یک تاپل حذف کنیم.
با این وجود حذف کامل یک تاپل با استفاده از کلیدواژه del امکان پذیر است.
1 2 3 4 5 6 7 8 9 10 11 12 |
# Deleting tuples my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # can't delete items # TypeError: 'tuple' object doesn't support item deletion # del my_tuple[3] # Can delete an entire tuple del my_tuple # NameError: name 'my_tuple' is not defined print(my_tuple) |
خروجی
1 2 3 |
Traceback (most recent call last): File "<string>", line 12, in <module> NameError: name 'my_tuple' is not defined |
متدهای تاپل در پایتون
متدهای افزودن یا حذف عناصردر تاپل در دسترس نیستند. فقط دو روش زیر موجود است.
چند نمونه از متدهای تاپل در پایتون
1 2 3 4 |
my_tuple = ('a', 'p', 'p', 'l', 'e',) print(my_tuple.count('p')) # Output: 2 print(my_tuple.index('l')) # Output: 3 |
خروجی
1 2 |
2 3 |
سایر عملیات تاپل در پایتون
1. آزمون عضویت تاپل
ما می توانیم با استفاده از کلیدواژه in، بررسی کنیم که آیا عنصری در تاپل وجود دارد یا خیر.
1 2 3 4 5 6 7 8 9 |
# Membership test in tuple my_tuple = ('a', 'p', 'p', 'l', 'e',) # In operation print('a' in my_tuple) print('b' in my_tuple) # Not in operation print('g' not in my_tuple) |
خروجی
1 2 3 |
True False True |
2. تکرار از طریق یک تاپل
ما می توانیم از یک حلقه for برای تکرار هر مورد در یک تاپل استفاده کنیم.
1 2 3 |
# Using a for loop to iterate through a tuple for name in ('John', 'Kate'): print("Hello", name) |
خروجی
1 2 |
Hello John Hello Kate |
مزایای تاپل نسبت به لیست در پایتون
از آنجا که تاپل ها کاملاً شبیه لیست ها هستند، هر دو در موقعیت های مشابه مورد استفاده قرار می گیرند. با این حال، استفاده از تاپل نسبت به لیست مزایای خاصی دارد. در زیر برخی از مزایای ذکر شده است:
ما به طور کلی از تاپل برای انواع داده های ناهمگن (متفاوت) و لیست ها برای انواع داده های همگن (مشابه) استفاده می کنیم.
از آنجا که تاپل ها تغییرناپذیر هستند، تکرار از طریق تاپل سریعتر از لیست است. بنابراین کمی افزایش عملکرد وجود دارد.
از تاپل هایی که دارای عناصر تغییرناپذیری هستند می توان به عنوان یک کلید برای یک دیکشنری استفاده کرد. درلیست ها این امکان پذیر نیست.
اگر داده ای دارید که تغییر نمی کند، پیاده سازی آن به صورت تاپل از آن محافظت می کند.
لیست جلسات قبل آموزش برنامه نویسی پایتون
- آموزش نصب و اجرای برنامه نویسی پایتون
- کلیدواژه ها و شناسه های برنامه نویسی پایتون
- دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
- متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون
- انواع داده ها در برنامه نویسی پایتون
- تبدیل نوع در برنامه نویسی پایتون
- ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
- عملگرها در برنامه نویسی پایتون
- نام و دامنه در برنامه نویسی پایتون
- دستور شرطی if…else در برنامه نویسی پایتون
- حلقه for در برنامه نویسی پایتون
- حلقه while در برنامه نویسی پایتون
- دستورات break و continue در برنامه نویسی پایتون
- دستور pass در برنامه نویسی پایتون
- توابع در برنامه نویسی پایتون
- آرگومان تابع در برنامه نویسی پایتون
- تابع بازگشتی در برنامه نویسی پایتون
- تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
- متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
- کلیدواژه global در برنامه نویسی پایتون
- ماژول های برنامه نویسی پایتون
- پکیج ها در برنامه نویسی پایتون
- اعداد و تبدیل نوع داده در برنامه نویسی پایتون
- لیست در برنامه نویسی پایتون
دیدگاه شما