تاپل‌ها در پایتون: مبانی و تفاوت با لیست‌ها

تاپل‌ها در پایتون: مبانی و تفاوت با لیست‌ها

در پایتون، ساختارهای داده‌ای مختلفی برای ذخیره مجموعه‌ای از آیتم‌ها وجود دارند. دو مورد از رایج‌ترین این ساختارها، لیست‌ها و تاپل‌ها هستند. هر دو برای نگهداری مجموعه‌ای از داده‌ها به کار می‌روند، اما تفاوت‌های کلیدی بین آن‌ها وجود دارد که درک این تفاوت‌ها برای نوشتن کد کارآمد و قابل اعتماد ضروری است. این مقاله به بررسی عمیق تاپل‌ها، ویژگی‌ها، کاربردها و تفاوت‌های آن‌ها با لیست‌ها می‌پردازد. این مقاله در دسته بندی ‘مبانی پایتون’ قرار می‌گیرد و برای مبتدیان و کسانی که قصد یادگیری پایتون را دارند، مفید خواهد بود.

تاپل چیست؟

تاپل (Tuple) یک ساختار داده‌ای ترتیبی و غیرقابل‌تغییر (Immutable) در پایتون است. این بدان معناست که پس از ایجاد یک تاپل، نمی‌توانید آیتم‌های آن را تغییر دهید، آیتم‌ها را اضافه یا حذف کنید. تاپل‌ها با استفاده از پرانتزهای گرد `()` تعریف می‌شوند و آیتم‌ها با کاما `,` از یکدیگر جدا می‌شوند. یک تاپل می‌تواند شامل انواع مختلف داده‌ها باشد، مانند اعداد، رشته‌ها، بولین‌ها و حتی سایر تاپل‌ها یا لیست‌ها.

ایجاد تاپل

چندین روش برای ایجاد تاپل در پایتون وجود دارد:

  • ایجاد تاپل خالی:
my_tuple = ()
  • ایجاد تاپل با یک آیتم:
my_tuple = (5,)  # توجه: کاما ضروری است، در غیر این صورت به عنوان یک عدد در نظر گرفته می‌شود.
  • ایجاد تاپل با چند آیتم:
my_tuple = (1, "hello", True, 3.14)
  • ایجاد تاپل بدون پرانتز:
my_tuple = 1, 2, 3  # پایتون به طور خودکار آن را به عنوان یک تاپل در نظر می‌گیرد.

دسترسی به آیتم‌های تاپل

مانند لیست‌ها، می‌توان به آیتم‌های تاپل با استفاده از اندیس (Index) دسترسی پیدا کرد. اندیس‌گذاری در پایتون از 0 شروع می‌شود. همچنین می‌توان از اندیس منفی برای دسترسی به آیتم‌ها از انتهای تاپل استفاده کرد.

my_tuple = (10, 20, 30, 40, 50)

print(my_tuple[0])  # خروجی: 10
print(my_tuple[2])  # خروجی: 30
print(my_tuple[-1]) # خروجی: 50

برش تاپل (Tuple Slicing)

برش تاپل به شما امکان می‌دهد زیرمجموعه‌ای از آیتم‌های تاپل را استخراج کنید. فرمت برش به صورت `[start:stop:step]` است.

my_tuple = (10, 20, 30, 40, 50)

print(my_tuple[1:4])  # خروجی: (20, 30, 40)
print(my_tuple[:3])   # خروجی: (10, 20, 30)
print(my_tuple[2:])   # خروجی: (30, 40, 50)
print(my_tuple[::2])  # خروجی: (10, 30, 50)

ویژگی‌های کلیدی تاپل‌ها

  • غیرقابل‌تغییر (Immutable): مهم‌ترین ویژگی تاپل‌ها این است که غیرقابل‌تغییر هستند. این بدان معناست که پس از ایجاد تاپل، نمی‌توانید مقدار هیچ یک از آیتم‌های آن را تغییر دهید.
  • ترتیبی (Ordered): آیتم‌ها در تاپل دارای ترتیب مشخصی هستند و این ترتیب حفظ می‌شود.
  • قابل هش (Hashable): از آنجایی که تاپل‌ها غیرقابل‌تغییر هستند، می‌توان از آن‌ها به عنوان کلید در دیکشنری‌ها استفاده کرد.
  • کارایی: تاپل‌ها معمولاً از لیست‌ها سریع‌تر هستند، زیرا پایتون می‌تواند آن‌ها را بهینه‌سازی کند، زیرا می‌داند که آن‌ها تغییر نمی‌کنند.

تفاوت‌های کلیدی بین تاپل و لیست

| ویژگی | تاپل | لیست |
|—|—|—|
| قابلیت تغییر | غیرقابل‌تغییر | قابل‌تغییر |
| تعریف | با پرانتز `()` | با براکت `[]` |
| روش‌ها | تعداد محدودی روش (مانند `count` و `index`) | تعداد زیادی روش (مانند `append`, `insert`, `remove`, `sort`) |
| کارایی | معمولاً سریع‌تر | معمولاً کندتر |
| مصرف حافظه | معمولاً کمتر | معمولاً بیشتر |
| استفاده به عنوان کلید دیکشنری | امکان‌پذیر | غیرممکن |

چه زمانی از تاپل استفاده کنیم؟

  • وقتی می‌خواهید داده‌ها را محافظت کنید: اگر می‌خواهید مطمئن شوید که داده‌ها تغییر نکنند، از تاپل استفاده کنید.
  • وقتی به کارایی نیاز دارید: اگر سرعت اجرای کد برای شما مهم است، از تاپل استفاده کنید.
  • وقتی می‌خواهید از داده‌ها به عنوان کلید در دیکشنری استفاده کنید: تاپل‌ها قابل هش هستند و می‌توانند به عنوان کلید در دیکشنری‌ها استفاده شوند.
  • نمایندگی داده‌های ثابت: برای نمایش مجموعه‌هایی از داده‌ها که نباید تغییر کنند، مانند مختصات یک نقطه یا اطلاعات یک رکورد.

عملیات روی تاپل‌ها

  • الحاق (Concatenation): می‌توان دو یا چند تاپل را با استفاده از عملگر `+` به هم الحاق کرد.
  • تکرار (Repetition): می‌توان یک تاپل را با استفاده از عملگر `*` تکرار کرد.
  • عضویت (Membership): می‌توان با استفاده از عملگر `in` بررسی کرد که آیا یک آیتم در تاپل وجود دارد یا خیر.
  • طول (Length): می‌توان با استفاده از تابع `len()` طول تاپل را بدست آورد.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)

print(tuple1 + tuple2)  # خروجی: (1, 2, 3, 4, 5, 6)
print(tuple1 * 3)      # خروجی: (1, 2, 3, 1, 2, 3, 1, 2, 3)
print(2 in tuple1)     # خروجی: True
print(len(tuple1))     # خروجی: 3

آنپکینگ تاپل (Tuple Unpacking)

آنپکینگ تاپل به شما امکان می‌دهد مقادیر یک تاپل را به متغیرهای جداگانه اختصاص دهید. تعداد متغیرها باید با تعداد آیتم‌های تاپل مطابقت داشته باشد.

my_tuple = (1, "hello", True)
x, y, z = my_tuple

print(x)  # خروجی: 1
print(y)  # خروجی: hello
print(z)  # خروجی: True

همچنین می‌توان از `*` برای جمع‌آوری آیتم‌های باقی‌مانده در یک لیست استفاده کرد:

my_tuple = (1, 2, 3, 4, 5)
x, y, *z = my_tuple

print(x)  # خروجی: 1
print(y)  # خروجی: 2
print(z)  # خروجی: [3, 4, 5]

نتیجه‌گیری

تاپل‌ها و لیست‌ها هر دو ابزارهای قدرتمندی برای ذخیره و مدیریت مجموعه‌ای از داده‌ها در پایتون هستند. با این حال، تفاوت‌های کلیدی بین آن‌ها وجود دارد که باید در نظر گرفته شوند. اگر به داده‌هایی نیاز دارید که تغییر نکنند و به کارایی اهمیت می‌دهید، تاپل‌ها انتخاب مناسبی هستند. اگر به داده‌هایی نیاز دارید که قابل تغییر باشند و به روش‌های مختلفی برای دستکاری آن‌ها نیاز دارید، لیست‌ها انتخاب بهتری هستند. درک این تفاوت‌ها به شما کمک می‌کند تا کد پایتون کارآمدتر، قابل‌اعتمادتر و خواناتری بنویسید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *