تور آموزشی

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

چندتایی Tuple

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

مثال:

a = (1, 2, None, “salam”)
b = [1, 2]
c = tuple(b)
print(type(a), type(b), type(c))

خروجی:

<class 'tuple'> <class 'list'> <class 'tuple'>

چندتایی‌ها مرتب هستند. به این معنی که دارای ترتیب مشخصی هستند و اعضای آن را می‌توان با اندیس فراخوانی کرد. استفاده از اندیس در چندتایی‌ها مشابه با لیست‌هاست. اولین اندیس [0]، دومین اندیس [1] و ... است. همچنین اندیس آخر [1-] می‌باشد.

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

مثال:

a = (1, 2, 3, 4)
a[0] = 5
a.append(6)

خروجی دو دستور آخر:

TypeError: 'tuple' object does not support item assignment
AttributeError: 'tuple' object has no attribute 'append'

برای بدست آوردن تعداد اعضای یک چندتایی از تابع len استفاده می‌کنیم. برای ساختن یک چندتایی که فقط یک عضو دارد باید بعد از اولین عضو از کاما (,) استفاده کنیم. در غیر این صورت پایتون نمی‌تواند متغیر را به عنوان یک چندتایی تشخیص دهد.

مثال:

a = (1)
b = (1,)
print(type(a))
print(type(b))

خروجی:

<class 'int'>
<class 'tuple'>

درواقع در خط اول a=(1) با a=1 برابر است.

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

فراخوانی اعضای چندتایی مشابه لیست است.

مثال:

a = (1, 2, 3, (‘a’, ‘b’, ‘c’), 10, 20, 30)
print(a[1])
print(a[-4])
print(a[3][1])
print(a[3][-1])
print(a[4:])
print(a[:4])

خروجی:

2
(‘a’, ‘b’, ‘c’)
b
c
(10, 20, 30)
(1, 2, 3, (‘a’, ‘b’, ‘c’))

برای بررسی اینکه آیا یک عنصر عضو چندتایی هست یا نه از عملگر in استفاده می‌کنیم. خروجی این عملگر True یا False است.

مثال:

fruits = (“apple”, “orange”, “strawberry”)
print(“apple” in fruits)
print(“blueberry” in fruits)

خروجی:

True
False

بروزرسانی چندتایی یا تاپل

زمانی که یک چندتایی (tuple) ایجاد می‌شود، نمی‌توان آن را تغییر داد. زیرا چندتایی‌ها در پایتون تغییرناپذیر (immutable) هستند. اما یک راه حل وجود دارد. همان‌طور که گفته شد چندتایی بسیار به لیست شبیه است. بنابراین می‌توانیم چندتایی را ابتدا به لیست تبدیل کنیم سپس تغییرات مورد نظر را اعمال  و درنهایت دوباره لیست را به چندتایی تبدیل کنیم.

مثال:

a = (‘a’, ‘b’, ‘c’)
b = list(a)
b[2] = ‘d’
a = tuple(b)
print(a)

خروجی:

(‘a’, ‘b’, ‘d’)

در حالت عادی هیچ عنصری را نمی‌توان به یک تاپل اضافه کرد. تاپل‌ها متد append ندارند اما می‌توان یک تاپل را به تاپل دیگر اضافه کرد.

مثال:

a = (1, 2)
b = (3, 4)
a += b
print(a)

خروجی:

(1, 2, 3, 4)

راه دوم همان تبدیل تاپل به لیست است. برای حذف کردن عنصر از تاپل هم می‌توان از همین راه (تبدیل کردن به لیست) استفاده کرد.

بازکردن چندتایی (Unpacking)

زمانی که یک تاپل می‌سازیم، معمولا مقادیری را به آن تخصیص (assign) می‌دهیم. به این کار بسته‌بندی تاپل (packing) می‌گوییم. در پایتون می‌توانیم این مقادیر را دوباره به متغیرهای جداگانه نسبت دهیم. به این کار از بسته‌بندی خارج کردن (unpacking) یا بازکردن تاپل می‌گوییم.

مثال:

cars = (“BMW”, “Toyota”, “Benz”, “Ford”)
a, b, c, d = cars
print(a)
print(b)
print(c)
print(d)

خروجی:

BMW
Toyota
Benz
Ford

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

در مثال قبل:

x, *y, z = cars
print(x)
print(y)
print(z)

خروجی:

BMW
[“Toyota”, “Benz”]
Ford

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

با دستور for یا while می‌توان یک تاپل را پیمایش کرد.

مثال:

numbers = (1, 2, 3, 4, 5)
for number in numbers:
    if number%2 == 0:
        print(number)

خروجی:

2
4

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

مثال:

for i in range(len(numbers)):
    if numbers[i]%2 == 0:
        print(numbers[i])

همین مثال را با حلقه while پیاده‌سازی می‌کنیم.

مثال:

i = 0
while(i<len(numbers)):
    if numbers[i]%2 == 0:
        print(numbers[i])
    i += 1

متدهای تاپل

دو متد count و index برای تاپل‌ها پیاده‌سازی شده‌اند. متد count تعداد تکرار یک عضو را برمی‌گرداند و متد index جایگاه یا اندیس عضو را نشان می‌دهد.

مثال:

x = (1, 5, 6, 1, 1, 0, 3, 3, 9)
print(x.index(6))
print(x.index(3))
print(x.count(1))

خروجی:

2
6
3

همان‌طور که مشاهده می‌شود اگر یک عنصر چندبار در تاپل تکرار شود متد index اندیس اولین عضو را نشان می‌دهد.