تفاوت تاپل و لیست در پایتون

Please login to bookmark Close

تفاوت تاپل و لیست

در واقع، در این درس تفاوت تاپل و لیست را از پایه و با مثال یاد می‌گیرید.

بنابراین تا اینجا هم لیست را کامل یاد گرفتید و هم تاپل را. وقتی دو چیز این‌قدر شبیه هم باشند، سؤال طبیعی این است که چرا پایتون هر دو را دارد.

همچنین، جواب در یک کلمه خلاصه می‌شود: تغییرپذیری. هر تفاوت دیگری که در این درس می‌بینید، نتیجه‌ی همین یک تفاوت است.

شباهت‌ها

به این ترتیب، هر دو مجموعه‌ای مرتب از عناصرند. یعنی ترتیب درشان معنا دارد و حفظ می‌شود. هر دو می‌توانند عناصر تکراری داشته باشند و هر دو می‌توانند همزمان عدد، رشته و هر نوع داده‌ی دیگری را در خود جا دهند.

علاوه بر این، هر دو با کروشه و ایندکس خوانده می‌شوند، هر دو برش می‌خورند، هر دو با for پیمایش می‌شوند و هر دو با in قابل جستجو هستند.

my_list = ["سیب", "موز"]
my_tuple = ("سیب", "موز")

print(my_list[0], my_tuple[0])
print(len(my_list), len(my_tuple))
print("موز" in my_list, "موز" in my_tuple)
سیب سیب
2 2
True True

تفاوت بنیادین

       لیست                        تاپل
  ┌───────────────┐            ┌───────────────┐
  │  سیب  │  موز  │            │  سیب  │  موز  │
  └───────────────┘            └───────────────┘
       ▲                          ▲
       │                          │
  می‌توان عوض کرد          قفل است، عوض نمی‌شود
my_list[0] = "گیلاس"     # مشکلی ندارد
my_tuple[0] = "گیلاس"    # TypeError

جدول مقایسه

تاپللیستویژگی
پرانتزکروشهعلامت تعریف
خیربلهقابل تغییر
۲ متدحدود ۱۱ متدتعداد متدها
کمتربیشترمصرف حافظه
کمی سریع‌ترکمی کندترسرعت پیمایش
بلهخیرکلید دیکشنری شدن
مقایسه‌ی لیست و تاپل

تفاوتی که معمولاً گفته نمی‌شود

در نهایت، تاپل می‌تواند کلید دیکشنری باشد ولی لیست نمی‌تواند. دلیلش هم همان تغییرناپذیری است: چیزی که ممکن است وسط کار عوض شود، نمی‌تواند نشانی ثابت باشد.

locations = {(35, 51): "تهران", (32, 51): "اصفهان"}
print(locations[(35, 51)])
تهران

در واقع، اگر همین کار را با لیست امتحان کنید:

TypeError: unhashable type: 'list'

بالاخره کدام را انتخاب کنیم

در واقع، قاعده‌ای که خودم به کار می‌برم: اگر قرار است مجموعه در طول برنامه رشد کند، کم شود یا تغییر کند، لیست. اگر مجموعه یک واحد به‌هم‌پیوسته است که نباید دستکاری شود، تاپل.

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

یک مزیت دیگر هم دارد که تازه‌کارها معمولاً نادیده می‌گیرند: وقتی از تاپل استفاده می‌کنید، دارید به بقیه‌ی تیم پیام می‌دهید که این داده قرار نیست تغییر کند. کد خوب، فقط کدی نیست که کار کند؛ کدی است که نیتش را هم منتقل کند.

اشتباهات رایج

تصور اینکه تاپل کاملاً قفل است

data = ([1, 2], "ثابت")
data[0].append(3)

print(data)
([1, 2, 3], 'ثابت')

تاپل تغییر نکرده؛ هنوز همان دو عنصر قبلی را دارد. ولی عنصر اولش خودش یک لیست است و لیست تغییرپذیر است. تاپل محتوای عناصرش را قفل نمی‌کند، فقط خودش را.

جمع‌بندی

لیست و تاپل در خواندن داده یکسان‌اند و تنها در نوشتن فرق دارند. لیست برای داده‌ی در حال تغییر است و تاپل برای داده‌ی ثابت.

در درس بعدی سراغ دیکشنری می‌رویم؛ ساختاری که به جای شماره، با نام به داده دسترسی می‌دهد.

برای مطالعه‌ی بیشتر می‌توانید به مستندات رسمی پایتون سر بزنید.

این درس بخشی از دوره آموزش پایتون مقدماتی است.

Please login to bookmark Close
پیشرفت شما در «دوره آموزش پایتون مقدماتی» (52%)
نظرات

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

52%
پیشرفت

سرفصل دوره

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم