ساختار آرایههای پایتون برای کار با اعداد و مدیریت مجموعه دادههای بزرگ مناسب است و انعطافپذیری به لیستها کمک میکند که دادههایی از نوعهای مختلف را در خود نگهداری کند. در نتیجه آشنا شدن با این نکات مهم، یاد میگیریم که چه زمانی از کارآمدی و ساختار آرایه پایتون، و چه زمانی از انعطافپذیری لیستهای پایتون استفاده کنیم. زبان برنامهنویسی پایتون دو گزینه اصلی لیست و آرایه را ارائه میدهد. در نگاه اول، شاید این ابزارها شبیه به یکدیگر به نظر برسند. زیرا هر دوی این ساختارها برای ذخیره داده و کمک به ایجاد تغییرات در دادههای ذخیره شده ساخته شدهاند. اما با بررسی تفاوت لیست و آرایه در پایتون، متوجه میشویم که این ساختارهای ذخیره داده اختلافاتی بسیار بیشتر از اختلاف در سینتکسها دارند. این دانش به کارشناسان خبره کار با دادهها کمک میکند که برای هر وظیفهای بهترین گزینه را انتخاب کنند.
در دنیای علم داده، جایی که مدیریت و نگهداری دادههای اصلیترین مسئله است، استفاده از ابزار صحیح میتواند باعث تفاوت بسیار زیادی در نتیجه کار شود. در این مطلب از مجله فرادرس، درباره تفاوت لیست و آرایه در پایتون نوشتهایم. ابتدای کار ماهیت این دو ساختار ذخیره داده را به صورت صریح و خلاصه بررسی کردهایم و سپس تفاوت و برتریهای ساختار لیست و آرایه در مقابل با یکدیگر ارزیابی کردیم.
تفاوت لیست و آرایه در پایتون چیست؟
تفاوت لیست و آرایه در پایتون را میتوان به صورت خلاصه در چند مورد بیان کرد.
- ماهیت آرایه و لیست: ماهیت آرایه و لیست با یکدیگر تفاوت دارند. لیستها جزو ساختارهای درونی پایتون هستند ولی آرایهها را باید با کمک ماژولهای جانبی در فایلها پایتون وارد کنیم.
- سازگاری نوع داده: سازگاری نوع داده در این دو ساختار متفاوت است. یعنی اینکه در لیستها الزامی به سازگاری عناصر ذخیره شده باهم وجود ندارد اما در آرایه باید تمام عناصر با نوع یکسان باشند.
- تخصیص اندازه: اندازه لیستها را میتوان به صورت پویا در زمان اجرای برنامه تغییر داد. اما اندازه آرایهها را یکبار در زمان تعریف آرایه مشخص میکنیم و بعد از آن قابل تغییر نیست.
- میزان مصرف حافظه: به دلیل نوع فضایی که لیست و آرایه در حافظه فیزیکی کامپیوتر اشغال میکنند، میزان مصرف حافظه توسط این دو ساختار با یکدیگر متفاوت است.
- عملیات قابل پشتیبانی توسط این ساختارها: تغریبا همه متدهای لیست در پایتون به صورت درونی تعریف شدهاند. این ساختار برای ذخیرهسازی دادهها انعطافپذیری بالایی دارد اما در اجرای عملیات سنگین ریاضی چندان مناسب نیست. ازطرفی متدهای آرایههای پایتون درون ماژولهایی تعریف شدهاند که این ساختار داده از آن ماژولها وارد میشود.
برای بهترین استفاده ممکن از آرایهها و لیستها در کدهای پایتون خود، خوب است که با ترفندهای پیشرفته کدنویسی پایتون نیز آشنا شویم. به همین منظور پیشنهاد میکنیم که فیلم آموزش برنامه نویسی پایتون پیشرفته درباره ترفندهای این زبان برنامه نویسی را از فرادرس را با دقت مشاهده کرده و به تکنیکهای مورد اشاره در این فیلم مسلط شوید. برای راحتی بیشتر لینک مربوط به این فیلم را در ادامه قرار دادهایم.
همچنین چند تفاوت دیگر که در ادامه مطلب، بعد از بررسی اولیه آرایه و لیست در پایتون، به همراه تمام موارد بالا به صورت مفصل بررسی کردهایم.
آرایه در پایتون چیست؟
آرایه به ساختار داده پیوستهای میگویند که فقط عناصر همگن را در خود نگهداری میکند. به این معنا که همه عناصر باید از نوع یکسانی باشند.
مواردی که در فهرست زیر مورد اشاره قرار دادهایم، ویژگیهای اصلی هستند که توسط آرایهها در پایتون به نمایش گذاشته شدهاند.
- طبیعت بههمپیوسته آرایه، به دادهها کمک میکند که در مکان مجاور هم در حافظه کامپیوتر ذخیره شوند. این کار باعث سادهتر شدن انجام عملیات مختلف بر روی آرایهها میشود.
- آرایههای پایتون را با دو روش میتوان تعریف کرد.
- استفاده از ماژول Array
- استفاده از کتابخانه NumPy
تعریف آرایه با استفاده از ماژول Array
برای تعریف و استفاده کردن از آرایهها با کمک این روش، باید ماژول array را به اسکریپت پایتون وارد کنیم.
1import array
2myArray = array.array(‘i’, [10, 20, 30]) # array declaration
توجه کنید که در تعریف بالا، ضرروی است که کد فرمت را به صورت واضح مشخص کنیم. در کد بالا i همان کد فرمت است که برای نشان دادن ذخیره «عدد صحیح» (Integer) در آرایه بهکار برده میشود.
تعریف آرایه با استفاده از ماژول NumPy
برای استفاده از این روش هم باید ماژول NumPy را در فایل پایتونی خود وارد کنیم. البته باید به صورت جداگانه این ماژول را نصب کرد.
1import numpy # importing the 'numpy' module
2
3myArray = numpy.array([10, 20, 30]) # array declaration
4
5# created array: [10, 20, 30]
عناصر آرایه همگی مرتب شده هستند. در واقع هر عنصر مانند لیست با شماره ایندکسی از نوع عدد صحیح مرتبط شده است. برای مثال در آرایه arr[10, 20, 30] ، 10 و 20 و 30 به ترتیب با ایندکسهای شماره ۰ و ۱ و ۲ در حافظه ذخیره میشوند.
توجه: شماره ایندکسها در آرایه از ۰ شروع میشوند.
هر آرایه فقط میتواند مقادیری را با نوع یکسان بپذیرد، یعنی فقط عناصر همگن میتوانند در آرایهای کنار هم قرار بگیرند. برای مثال: آرایه arr[1, 2, 3] فقط شامل اعداد صحیح و آرایه arr[‘a’, ‘b’, ‘c’] فقط شامل مقادیر رشتهای است.
به طور کلی، آرایههای پایتون برای ذخیرهسازی دستهای از آیتمهای مشابه استفاده میشوند. به عنوان مثال، برای بیان یکی از کاربردهای واقعی آرایه میتوان به ذخیرهسازی قیمت سهام، مربوط به سهم خاصی در محدوده زمانی چند روزه اشاره کرد. قیمت بسته شدن سهام به صورت دست نخورده برای هر سهم در هر هروز باقی میماند. این طلب به معنای آن است که ذخیره کردن همچون اطلاعاتی در ساختارهای داده تغییرناپذیری مانند آرایه عاقلانهتر به نظر میرسد.
در حقیقت، آرایههای NumPy عموما برای ذخیره دادههایی از جنس مجموعه دادههای بزرگ در حوزههای «علم داده» (Data Science) و «یادگیری ماشین» (Machine Learning) استفاده میشوند. هر آرایه NumPy متناظر با ویژگی خاصی در مجموعه داده است.
آموزش پایتون با فرادرس
زبان برنامه نویسی پایتون یکی از زبانهای بسیار پرطرفدار و کاربردی در زمان حاضر است. این زبان به دلیل چندکاره بودن، انعطافپذیری و سادگی در آموزش گزینه بسیار خوبی برای شروع یادگیری برنامهنویسی است. توانایی این زبان در حل پروژههای بزرگ و پیچیده، در همه مدل پروژههای حرفهای از طراحی بک اند سایت گرفته تا مدلسازی هوش مصنوعی و غیره باعث شده که بازار کار خوبی را در میان سایر زبانهای برنامهنویسی بدست بیاورد. به همین دلیل، وبسایت آموزشی فرادرس، فیلمهای آموزشی بسیار مناسبی با کیفیت عالی و هزینههای مقرون بهصرفه برای آموزش این زبان برنامهنویسی تهیه کرده است.
این فیلمها مقدمه بسیار خوبی برای شروع یادگیری و کار با پایتون و پیشنیاز دورههای پیشرفته آن هستند. حتی فرادرس هزینه بعضی از این دورهها را رایگان کرده است. با این کار، تلاش دارد تا تمام افرادی که به دنبال کسب دانش برنامهنویسی هستند را برای شروع آموزش، تشویق کند. در صورت تمایل به دیدن فیلمهای بیشتر میتوانید بر روی تصویر بالا کلیک کنید و به صفحه اصلی این مجموعه آموزش مراجعه کنید.
لیست در پایتون چیست؟
لیستها یکی از ظرفها یا ساختارهای ذخیره داده درونی پایتون هستند. یکی از مهمترین مزایای استفاده از لیستها این است که هر لیست به تنهایی میتواند مقادیر مربوط به چندین نوع داده مختلف را در خود ذخیره کند.
موارد مورد اشاره در فهرست زیر، شامل مهمترین ویژگیهای به نمایش گذاشته شده توسط لیستها در پایتون میشوند.
- در مسئله ذخیرهسازی دادهها، لیستها انعطافپذیری بیشتری نسبت آرایه دارند. آنها میتوانند دادههای ناهمگون را در خود ذخیره کنند. به این معنا که لیستها قادر هستند عناصری از نوع دادههای متفاوت را به صورت یکجا ذخیره کنند.
[1, 'hello', ['x', 'y']]
- همچنین لیستها مرتب شده نیز هستند. یعنی عناصر درون لیستها با کمک ایندکس مربوط به هر کدام قابل دسترسیاند. ایندکسهای منفی هم میتوانند برای دسترسی به عنصری از انتهای لیست مورد استفاده قرار بگیرند. در کادر زیر مثالی از استفاده ایندکس منفی را نمایش دادهایم.
1myList = [20, 40, 'hello', 'world']
2
3# printing the second last element
4
5print(myList[-2])
خروجی حاصل از اجرای کد بالا به صورت زیر در کنسول پایتون نمایش داده میشود.
hello
- لیستها را میتوان بعد از مقدار دهی اولیه بهسادگی تغییر داد. برای دستکاری هر مقداری در لیست، فقط کافی است که با استفاده از ایندکس عنصر مورد نظر به آن دسترسی پیدا کنیم.
1cars = ['Ford', 'Tesla', 'Jaguar']
2
3cars[2] = 'BMW'
- در پایتون با استفاده از مفهوم لیستهای تودرتو، به سادگی میتوان لیستهای چندبعدی را نیز پیادهسازی کرد. این لیستهای چندبعدی را میتوان بهجای آرایههای چندبعدی در پایتون استفاده کرد.
1 myArr = [[1, 2], [3, 4]]
2
3# created 2-d array:
4
5# |1, 2|
6
7# |3, 4|
به عنوان مثالی از موارد استفاده واقعی لیستهای ناهمگون چندبعدی در پایتون میتوانیم به ذخیرهسازی مجموعهای از جزئیات محصولات مانند نوع محصول، دستهبندی، هزینه ساخت، قیمت فروش و غیره اشاره کرد. هر لیستی در چنین لیست چندبعدی نماینده محصول مجزایی است. از آنجا که لیستها قابل تغییر هستند، تغییردادن جزئیات مربوط به هر محصول در زمان مورد نیاز با کمک لیستها بسیار سادهتر میشود.
اگر در آرزوی تبدیل شدن به یکی از برنامهنویسهای حرفهای پایتون هستید، کسب دانش پایه درباره تفاوت لیست و آرایه در پایتون یکی از جنبههای کلیدی این تخصص است. بنابراین بدون اینکه نیاز به توضیح بیشتر، میتوان تمام این تفاوتها را در جدولی مانند جدول زیر به صورت خلاصه بیان کرد.
تفاوت لیست و آرایه در پایتون
در این بخش تفاوت لیست و آرایه در پایتون را به صورت مختصر و مفید در جدول زیر ارائه دادهایم. با توجه به جدول پایین میتوان این دو ساختار ذخیرهسازی داده را در همه ابعاد گوناگون بررسی کرد.
پارامتر | لیست | آرایه |
تعریف |
«درونی» (Inbuilt) است. |
نیاز به تعریف ماژول Array یا کتابخانه NumPy |
«نوع داده» (Data Type) |
شامل مقادیر با دادههای مختلف |
همه عناصر باید یکسان باشند. |
اندازه | امکان تغییر اندازه | اندازه ثابت و بدون تغییر آرایهها |
فضای اشغال شده در حافظه | اشغال فضا و حافظه بیشتر | ذخیرهسازی فشردهتر |
عملکرد ذخیرهسازی دادهها | فضای کم برای ذخیرهسازی | فضای زیاد برای ذخیرهسازی |
عملیات ریاضی | نمیتوان به صورت مستقیم استفاده کرد. | میتوان به صورت مستقیم استفاده کرد. |
نمایش دادهها | نمایش عناصر بدون استفاده از حلقه | لزوم استفاده از حلقه برای نمایش عناصر |
مقایسه دقیق تفاوت لیست و آرایه در پایتون
لیستها و آرایهها از مهمترین ساختارهای داده در پایتون هستند. معمولا بخاطر تعریف درونی در پایتون و وجود متدهای فراوان، کار با لیستها در پایتون بسیار سادهتر است. برنامهنویسان زودتر از آرایه با لیست آشنا میشوند. اما آرایهها بخاطر کاربردهای خاص و حرفهای که دارند کمتر مورد استفاده برنامهنویسان قرار میگیرند. به همین دلیل در دورههای آموزشی هم کمتر آموزش حرفهای برای آرایهها تدارک دیده شده، اما فرادرس که به طور کاملی به آموزش میاندیشد، درباره این ساختارهای داده هم فیلم آموزشی حرفهای تهیه کرده است. برای آشنایی با آرایهها میتوانید فیلم آموزش معرفی و تعریف آرایه ها در دوره تکمیلی پایتون از فرادرس را به صورت رایگان مشاهده کنید. لینک مربوط به این فیلم را در ادامه قرار دادهایم.
با کمک پارامترهای این بخش میتوانیم تفاوت بین لیستها و آرایههای پایتون را به صورت دقیقتری درک کنیم. در این قسمت از مطلب، برای درک سادهتر، هر پارامتر مورد اشاره را همراه با مثالی ارائه دادهایم.
سازگاری نوع داده
«سازگاری نوع داده» (Datatype Consistency) اشاره به همسان بودن انواع درون ساختار داده مشخص شدهای میکند. این مطلب در برنامهنویسی به معنای آن است که عناصر ذخیره شده در مجموعهای مانند لیست یا آرایه باید از نوع یکسان باشند یا میتوانند با یکدیگر فرق کنند. برای درک درست تفاوت بین لیستها و آرایهها در پایتون توجه به این نکته ضروری است. لیستها با کمک انواع مختلفی که میپذیرند امکان تطبیقپذیری بالاتری دارند. در حالی که اغلب اوقات آرایهها ساختارهای سفت و سختتری را اجرا میکنند. همچنین این موضوع کلید بحث بین تفاوت آرایهها و لیستهای پیوندی و نقش آنها در مدیریت داده به صورت کارآمد است.
لیست: لیستهای پایتون میتوانند شامل عناصری با نوع دادههای مختلف باشند. انعطافپذیری مهمترین دلیلی است که باعث به وجود آمدن چنین «ساختارهای داده ناهمگونی» (Heterogeneous Data Structures) شده.
1my_list = [1, 'hello', 3.14, True]
آرایه: آرایههای پایتون، از نوع «ساختارهای داده همگون» (Homogeneous Data Structures) هستند. به این معنا که لازم است همه عناصر این ساختار داده اعضای مربوط به نوع یکسانی باشند. این مطلب تضمین میکند که برای تخصیص و دسترسی کارآمد به حافظه، ساختار داده یکپارچهای وجود داشته باشد.
1import numpy as np
2
3my_array = np.array([1, 2, 3]) # The array enforces consistent data type (integer in this case)
یکی از بهترین راهها برای آشنا شدن و تسلط به آرایهها و لیستها و درک تفاوت بین این موارد، حل پروژهها و مسائلی درباره هر کدام از این ساختارهای ذخیره داده است. به همین دلیل پیشنهاد میکنیم که مطلب کدهای پایتون آماده کاربردی و ضروری برای برنامه نویسان مبتدی تا حرفه ای از مجله فرادرس را مطالعه کنید. با جستوجو در فهرست این مطلب میتوانید کدهای پایتون آماده مربوط به هر کدام از این ساختارها را مشاهده و بررسی کنید.
تخصیص اندازه پویا
بعضی از ساختارهای داده میتوانند اندازه خود را در طول زمان اجرا تنظیم کنند. آنها این کار را با اجازه به حذف و اضافه عناصر درون ساختار داده و بدون تعیین کردن محدودیتهای اندازه از پیش تعیین شده انجام میدهند. در پایتون، میتوانیم این توانایی تخصیص اندازه پویا را در لیستها مشاهده کنیم. لیستها میتوانند به صورت یکپارچه با تعداد عناصر متغیر خود را تنظیم کنند. این مسئله یکی از موارد برجسته تفاوت لیست و آرایه در پایتون است. همچنین این مفهوم برای درک تفاوت در حوزههای انعطافپذیری و مدیریت حافظه بین آرایه و لیست بسیار ضروری است.
تخصیص اندازه پویا در لیست های پایتون
لیستهای پایتون دارای توانایی تخصیص اندازه پویا هستند. به این معنا که بدون مشخص کردن اندازه لیستها قبل از انجام کار میتوانیم به عناصر آنها افزوده یا از میان عناصر آنها تعداد دلخواهی را حذف کنیم.
برای مثال، در کادر زیر بهسادگی عنصری را به لیست اضافه و عنصر دیگری را از آن حذف کردیم.
1 my_list = [1, 2, 3]
2
3my_list.append(4) # Dynamically adds an element
4
5my_list.remove(2) # Dynamically removes an element
6
7Dynamic Sizing in Arrays (Python):
آرایههای درون پایتون، به صورت پیشفرض در زمان به وجود آمدن دارای اندازه ثابتی میشوند. تغییردادن اندازه شامل ساخت آرایه جدیدی است. این کار میتواند از کارایی برنامه بکاهد.
در مثال زیر روش اضافه کردن عنصر جدید را به آرایه با کمک تولید آرایه جدید نمایش دادهایم.
1import array
2
3my_array = array.array('i', [1, 2, 3]) # Fixed size
4
5# To dynamically resize, a new array needs to be created
6
7new_array = array.array('i', [1, 2, 3, 4])
8
9Memory Management:
لیستها به صورت درونی از آرایههای پویا استفاده میکنند. بعضی وقتها در طول اجرای عملیات تغییر اندازه این کار با Overallocation باعث بهینهسازی کارآیی میشود.
Overallocation: به معنای تخصیص بیش از حد منابع است. یعنی پایتون فضایی بیش از فضای مورد نیاز لیست را برای درج عناصر احتمالی آینده به آن اختصاص میدهد.
1 # Dynamic sizing with Python lists
2
3my_list = [1, 2, 3]
4
5my_list.append(4) # Dynamically adds an element
6
7my_list.remove(2) # Dynamically removes an element
آرایهها دارای اندازه ثابت شدهای هستند. این کار باعث استفاده بهینه از حافظه میشود. اندازه آرایه در زمان ساخت آن تعیین شده و بعد از آن تغییر نمیکند.
در کادر زیر میتوانیم نمونهای از تعریف آرایه را مشاهده کنیم.
1 import numpy as np
2
3# NumPy array with dynamic sizing and efficient memory management
4
5my_array = np.array([1, 2, 3])
کارآمدی
در این قسمت از مطلب به بررسی تفاوت کارآمدی لیست و آرایه در پایتون پرداختهایم.
- لیست: دسترسی تصادفی به عناصر در لیستها نسبت به آرایهها به صورت کندتری انجام میشود. زیرا عناصر لیست در مکانهای پشت سر هم در حافظه قرار نگرفتهاند. دسترسی به هر عنصر ممکن است که مستلزم پیمایش لیست از ابتدای آن شود.
- آرایه: از آنجا که عناصر آرایه در مکانهای بههمپیوسته در حافظه قرار گرفتهاند، فرایند دسترسی تصادفی به عناصر به صورت سریعتری انجام میشود. دسترسی به عناصر شامل ایندکسگذاری مستقیم است و در نتیجه ایندکسگذاری مستقیم، فرایند بازیابی اطلاعات با سرعت بیشتری انجام میپذیرد.
سادگی در استفاده
در این قسمت از مطلب، تفاوت لیست و آرایه در پایتون را از دیدگاه سادگی در کاربرد مورد بررسی قرار دادهایم.
- لیست: لیستها با کمک توابع درونی خود که به منظور استفاده در کاربردهای گوناگون تعریف شدهاند، دارای ویژگی چندکاربردی با استفاده بسیار سادهای شدهاند. این ساختارهای داده برای استفاده در طیف گستردهای از وظایف برنامهنویسی بدون بهکار بردن کتابخانههای اضافی مناسب هستند.
- آرایه: برای کارهای پیشرفته مختلفی مانند محاسبات ریاضی و عددی آرایهها شاید نیازمند به استفاده از کتابخانههای اضافی مثل NumPy شوند. آرایهها نسبت به لیستها تخصصیتر هستند و ممکن است برای یادگیری کار با آنها نیاز به تلاش بیشتری داشته باشیم.
تفاوت در حذف و اضافه
در این قسمت از مطلب، تفاوت لیست و آرایه در پایتون را از دیدگاه اجرای عملیات حذف و اضافه عناصر برای هر کدام مورد بررسی قرار دادهایم.
- لیست: لیستها از اجرای عملیات حذف و اضافه به صورت حرفهای در هر دو سمت انتهایی خود پشتیبانی میکنند. اما این عملیات در میانههای لیست ممکن است کمی کندتر انجام شود. زیرا هر تغییری در میانههای لیست نیاز به جابهجایی عناصر برای بازچینی مرتب لیست دارد.
- آرایه: در آرایهها عملیات حذف و اضافه عناصر نسبت به لیستها مخصوصا در میانههای آرایه، ممکن است به صورت کندتری به پیشرود. زیرا آرایهها مجاز به تغییر اندازه نیستند و برای سازگاری با تغییرات در اندازه نیاز به جابهجایی عناصر یا حذف آرایه فعلی و ساخت آرایه جدیدی دارند.
آموزش حرفه ای تر کدنویسی پایتون با تکنیک اجرای پروژه
زبان پایتون دارای سطوح پیشرفتهای است که میتواند در پیشرفتهترین استفادههای تکنولوژیکی حال حاضر دنیا بهکار گرفته شود. از تکنیکهای حرفهای و فریمورکهای کامل برای طراحی انواع اپلیکیشنها استفاده میکند. پروژههایی متنوعی از اپلیکیشنهای اینترنتی امن گرفته تا ابزار ساخت بازی، ابزار حرفهای دیتا ساینس، آموزش مدلهای قدرتمند هوش مصنوعی و غیره همگی توسط پایتون قابل اجرا و حل هستند. برای آشنا شدن بیشتر با این روشها و تکنیکهای سطح بالا و اجرای بهتر پروژهها در این قسمت چند مورد از فیلمهای آموزشی و پروژه محور پایتون را معرفی کردهایم.
تمام این فیلمها توسط فرادرس تهیه شدهاند. فرادرس به عنوان یکی از قدرتمندترین تولیدکنندگان محتوی آموزشی فارسی، دقت و حساسیت بالایی در کیفیت و زمان فیلمهای آموزشی خود دارد. این فیلمها توسط اساتید برجسته با کیفیت عالی و فهرستبندی دقیق تهیه میشوند. برای همین به کاملترین شکل ممکن مخاطب را از روند جاری تولید پروژهها به وسیله پایتون مطلع میکنند.
در صورتی که نیاز به دیدن فیلمهای بیشتر داشتید با کلیک بر روی تصویر بالا یا مراجعه به وبسایت آموزشی فرادرس میتوانید از فهرست کامل فیلمهای آموزشی فرادرس دیدن کنید.
نتیجه نهایی مقایسه تفاوت لیست و آرایه در پایتون
اگر در حال خواندن این بخش از مطلب هستید به معنای آن است که نسبت به تفاوت لیست و آرایه در پایتون به طور کامل آشنایی دارید. البته باید به صورت دقیق نسبت به زمان استفاده هر کدام از این دو ساختار داده برای بدستآوردن بیشترین بهرهوری آگاه باشید.
در این قسمت از مطلب، درباره شرایط مختلفی که باید برای انتخاب مناسبترین ساختار ذخیره داده در بین این دو در نظر گرفته شود بحث کردهایم.
نوع عناصر
اگر نوع دادههای مورد استفاده در برنامه از قبل تعیین نشده بود، به احتمال زیاد مجموعهای از دادههای متعلق به انواع گوناگون را برای ذخیره در برنامه خواهیم داشت. برای نمونه، در ذخیرهسازی ردیفی از مشخصات دانشآموزان که دارای موجودیتهای مختلفی مانند موارد زیر هستند. استفاده از لیست، انتخاب مناسبتری است.
اما اگر دادههایی که باید ذخیره شوند، همگی تعلق به نوع داده یکسانی داشته باشند، میتوانیم از هر دو نوع آرایه و لیست استفاده کنیم. در چنین مواردی انتخاب بین این ساختارها به گزینههای دیگری مانند، اندازه داده، عملیاتی که قرار است بر روی دادهها انجام شود و کاربرد دادههای ذخیره شده بستگی دارد.
مصرف حافظه
لیستها تمایل به مصرف حافظه بیشتری دارند. زیرا در زمان مقداردهی اولیه لیستها، مقداری فضای حافظه اضافی هم به آنها تخصیص داده میشود. اگرچه هنوز هم برای مجموعه دادههای کوچک استفاده از لیستها بهترین گزینه است.
برای ذخیرهسازی مقادیر حجیمی از دادهها استفاده از ساختار آرایه گزینه بسیار مناسبتری است. زیرا میزان مصرف حافظه آرایهها از لیستها بسیار بهینهتر است.
عملیات های پشتیبانی شده
اگر دادههایی که استفاده میکنیم نیازی به هیچ عملیات محاسباتی نداشته باشد، بنابراین استفاده از لیستها میتواند انتخاب بسیار بهتری باشد. زیرا لیستها از توابع درونی بهتری برای کار با دادهها پشتیبانی میکنند.
از سوی دیگر، آرایهها در زمانی باید استفاده شوند که عملیات ریاضی میخواهیم اجرا کنیم. ماژول NumPy از تعداد زیادی عملیات پیچیده و حرفهای ریاضی شامل محاسبات مربوط به مثلثات و لگاریتم پشتیبانی میکند.
ماژول های که باید import شوند
لیستها را بدون import کردن هیچ نوع ماژول خاص یا کتابخانهای میتوان تعریف و استفاده کرد. از آنجا که لیست یکی از ساختارهای داده درونی تعریف شده در پایتون است، میتوان آن را مانند متغیری معمولی تعریف کرد.
اگرچه آرایه یکی از ساختارهای ذخیره داده پیشفرض پایتون نیست اما دو ماژول بسیار پرطرفدار و مشهور Array و NumPy برای تعریف آرایه وجود دارند. هر ماژول همراه با چند تابع از پیشتعریف شده برای کار و مدیریت دادههای ذخیره شده در آرایه عرضه شده است.
جمع بندی
درک تفاوت لیست و آرایه در پایتون برای توسعهدهندگان حرفهای ضروری است. این مسئله درباره تعریف کردن برنده رقابت بین این دو ساختار نیست، بلکه هدف پیدا کردن بهترین انتخاب در هر پروژه با توجه به شرایط پروژه است. در عملیات عددی یا وظایفی که حجم داده مصرفی بسیار بالایی دارند آرایه بسیار عالی عمل میکند. درحالی که لیست تطبیقپذیری بالایی را برای مدیریت و کار با انواع دادههای مختلف ارائه میدهد. تسلط به کاربرد صحیح این ساختارهای داده، باعث میشود که کارآمدی و مهارتهای حل مسئله برنامهنویسان به طرز بسیار خوبی افزایش پیدا کند. بنابراین، برای اشخاصی که میخواهند در پایتون حرفهای شوند، درک این تفاوتها مهارت بسیار با ارزشی است که تواناییهای کدنویسی آنها را ارتقا میدهد.
در این مطلب از مجله فرادرس، درباره لیستها و آرایههای پایتونی بحث کردیم. ابتدا هر کدام از این ساختارهای داده را به درستی شناخته و سپس به بیان تفاوتهای بین آنها با نمایش مثالهای ساده کدنویسی شدهای پرداختیم. در نهایت هم به صورت خلاصه این دو ساختار ذخیره داده را از جهت نوع عناصر مظروف هر کدام، میزان مصرف حافظه، عملیات پشتیبانی شده و روشهای تعریف با یکدیگر مقایسه کردیم.
source