وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

لیست ها در مقابل تاپل ها در پایتون

0 5
زمان لازم برای مطالعه: 4 دقیقه


معرفی

لیست ها و تاپل ها دو مورد از رایج ترین ساختارهای داده در پایتون هستند که دیکشنری ها سومین آن هستند. لیست ها و تاپل ها بسیار هستند شباهت ها:

  • آنها هر دو نوع داده توالی هستند که مجموعه ای از آیتم ها را ذخیره می کنند
  • آنها می توانند اقلام از هر نوع داده ای را ذخیره کنند
  • و هر موردی از طریق فهرست آن قابل دسترسی است.

بنابراین سؤالی که ما در اینجا می خواهیم به آن پاسخ دهیم این است که آنها چگونه متفاوت هستند؟ و اگر تفاوتی بین این دو وجود ندارد، چرا باید این دو را داشته باشیم؟ نمی توانیم هر دو لیست را داشته باشیم یا چندتایی؟

در این مقاله نشان خواهیم داد که لیست ها و تاپل ها چگونه با یکدیگر تفاوت دارند.

تفاوت نحوی

در پایتون لیست ها و تاپل ها به روش های مختلف اعلان می شوند. یک لیست با استفاده از براکت مربع ایجاد می شود () در حالی که تاپل با استفاده از پرانتز ایجاد می شود ():

tuple_names = ('Nicholas', 'Michelle', 'Alex')
list_names = ('Nicholas', 'Michelle', 'Alex')
print(tuple_names)
print(list_names)

این منجر به:

('Nicholas', 'Michelle', 'Alex')
('Nicholas', 'Michelle', 'Alex')

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

پایتون type() روش به شناسایی آسان نوع یک شی کمک می کند:

print(type(tuple_names)) 
print(type(list_names)) 

قابل تغییر در مقابل غیرقابل تغییر

لیست ها هستند قابل تغییر در حالی که تاپل ها هستند تغییرناپذیر، و این نشان می دهد تفاوت کلیدی بین دوتا. این یعنی چی؟

ما می‌توانیم مقادیر یک لیست را تغییر/تغییر دهیم، اما نمی‌توانیم مقادیر یک تاپل را تغییر/تغییر دهیم.

از آنجایی که لیست ها قابل تغییر هستند، نمی توانیم از یک لیست به عنوان کلید در فرهنگ لغت استفاده کنیم. این به این دلیل است که فقط یک شیء تغییرناپذیر می تواند به عنوان کلید در فرهنگ لغت استفاده شود. بنابراین، در صورت نیاز می توانیم از تاپل ها به عنوان کلیدهای فرهنگ لغت استفاده کنیم.

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

بیایید به مثالی نگاهی بیندازیم که تفاوت بین لیست ها و تاپل ها را از نظر تغییر ناپذیری نشان می دهد. اجازه دهید یک را ایجاد کنیم فهرست با نام های مختلف:

names = ("Nicholas", "Michelle", "Alex")

بگذارید ببینیم اگر بخواهیم اولین عنصر لیست را از آن تغییر دهیم، چه اتفاقی خواهد افتاد Nicholas به Samuel:

names(0) = "Samuel"

توجه داشته باشید: اولین عنصر در شاخص است 0.

حال اجازه دهید محتویات لیست را نمایش دهیم:

print(names)

این اراده print از لیست به روز شده خارج شوید:

('Samuel', 'Michelle', 'Alex')

اگر بخواهیم همین کار را با a انجام دهیم چه می شود چندتایی? ابتدا بیایید یک تاپل ایجاد کنیم:

 names = ("Nicholas", "Michelle", "Alex")

اجازه دهید اکنون سعی کنیم عنصر اول تاپل را تغییر دهیم Nicholas به Samuel:

names(0) = "Samuel"

این منجر به خطای زیر می شود:

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    names(0) = "Samuel"
TypeError: 'tuple' object does not support item assignment

ما خطایی دریافت کردیم مبنی بر اینکه یک شی تاپل از انتساب آیتم پشتیبانی نمی کند. دلیل آن این است که یک شیء تاپلی پس از ایجاد آن قابل تغییر نیست.

استفاده مجدد در مقابل کپی شده

تاپل ها قابل کپی نیست. دلیل آن این است که تاپل ها تغییر ناپذیر هستند. اگر بدوید tuple(tuple_name)، بلافاصله خودش باز خواهد گشت:

names = ('Nicholas', 'Michelle', 'Alex')
copy_names = tuple(names)
print(names is copy_names)

این دو یکی هستند:

True

متقابلا، list(list_name) نیاز به کپی کردن همه داده ها در یک لیست جدید دارد:

names = ('Nicholas', 'Michelle', 'Alex')
copy_names = list(names)
print(names is copy_names)

از آنجا که names و copy_names یکسان نیستند، نتیجه این است False:

False

در مرحله بعد، اجازه دهید در مورد چگونگی تفاوت لیست و تاپل از نظر اندازه بحث کنیم.

تفاوت اندازه

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

به عنوان مثال، بیایید یک لیست و یک تاپل حاوی عناصر مشابه ایجاد کنیم و اندازه این دو را با هم مقایسه کنیم:

tuple_names = ('Nicholas', 'Michelle', 'Alex')
list_names = ('Nicholas', 'Michelle', 'Alex')
print(tuple_names.__sizeof__())
print(list_names.__sizeof__())

خروجی نشان می دهد که اندازه لیست بزرگتر از تاپل است:

48
64

توجه داشته باشید: اندازه نشان داده شده بر حسب می باشد بایت ها.

همگن در مقابل ناهمگن

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

توجه داشته باشید: این فقط یک است تفاوت معنایی. هر دو نوع داده ناهمگن هستند، اما قرارداد متفاوت است. می توانید عناصری از یک نوع را در یک تاپل و عناصر انواع مختلف را در یک لیست ذخیره کنید.

پیشنهاد می‌کنیم بخوانید:  دسترسی به آخرین عنصر یک لیست

با وجود این واقعیت که لیست دارای ترکیبی از رشته ها و تعدادی است، کد زیر بدون خطا اجرا می شود:

list_elements = ('Nicholas', 10, 'Alex')
tuple_elements = ('Nicholas', "Michelle", 'Alex')

طول متغیر در مقابل طول ثابت

تاپل ها دارای یک طول ثابت در حالی که لیست ها دارای یک طول متغیر. این بدان معنی است که ما می توانیم اندازه یک لیست ایجاد شده را تغییر دهیم اما نمی توانیم اندازه یک تاپل موجود را تغییر دهیم:

list_names = ('Nicholas', 'Michelle', 'Alex')
list_names.append("Mercy")
print(list_names)

خروجی نشان می دهد که نام چهارم به لیست اضافه شده است:

('Nicholas', 'Michelle', 'Alex', 'Mercy')

ما از پایتون استفاده کرده ایم append() روش برای این ما می توانستیم از طریق insert() روش:

list_names = ('Nicholas', 'Michelle', 'Alex')
list_names.insert(3, "Mercy")
print(list_names)

خروجی دوباره نشان می دهد که عنصر چهارم به لیست اضافه شده است:

('Nicholas', 'Michelle', 'Alex', 'Mercy')

یک پایتون چندتایی راهی برای تغییر اندازه آن در اختیار ما قرار نمی دهد.

نتیجه

می توانیم نتیجه بگیریم که اگرچه لیست ها و تاپل ها هر دو ساختار داده ای در پایتون هستند، اما تفاوت های قابل توجهی بین این دو وجود دارد، با تفاوت اصلی این است که لیست ها قابل تغییر هستند در حالی که تاپل ها غیر قابل تغییر هستند. یک لیست دارای اندازه متغیر است در حالی که یک تاپل دارای اندازه ثابت است. عملیات روی تاپل ها را می توان سریعتر در مقایسه با عملیات اجرا کرد روی لیست ها

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-06 10:53:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید