دیتا تایپ لیست برای سازماندهی اطلاعات جهت تسهیل در امر دسترسی و بهروزرسانی سریع آنها مورد استفاده قرار میگیرد. برای مثال، میتوان لیستی از اسامی دانشآموزان یک کلاس را در نظر گرفت که به ترتیب حروف الفبا مرتب شدهاند که با بهکارگیری چنین لیستی، دسترسی به اطلاعات دانشآموزان و تغییر یا بهروزرسانی آنها راحتتر انجام میشود. همچنین از جمله دیگر کاربردهای لیستها در دنیای واقعی میتوان لیست خرید را نام برد به طوری که در زمان خرید با استفاده از یک چکلیست ساده میتوانیم کالاهای مورد نیاز خود را مشخص کرده و هر یک را خریداری کنیم.
همانطور که میبینید، لیستها در زندگی روزمره بسیار پرکاربرد هستند و برای ذخیرۀ دادهها و دسترسی سریع به آنها مورد استفاده قرار میگیرند که از همین روی طراحان زبان برنامهنویسی پایتون نیز مفهوم «لیست» را وارد این زبان کردهاند تا دولوپرها بتوانند از مزایای استفاده از این نوع دیتا تایپ در توسعهٔ نرمافزار بهرهمند گردند که در این آموزش با نحوۀ ایجاد آبجکتهایی از نوع لیست، دسترسی به اطلاعات درون آنها و همچنین چگونگی مدیریت اطلاعات در دیتا تایپ لیست آشنا خواهیم شد.
در آموزش گذشته با آبجکتهایی از نوع دنبالهها آشنا شدیم و گفتیم آبجکتهایی از جنس استرینگ نیز به نوعی دنباله هستند. در واقع، دنبالهها را میتوان همچون زنجیرهای از اشیاء در نظر گرفت که در قالب یک شیئ به هم متصل شدهاند به طوری که دسترسی به هر یک از اجزای این زنجیرۀ به هم پیوسته نیز امکانپذیر میباشد. در واقع، در زبان برنامهنویسی پایتون هر یک از لیستها به نوعی دنباله محسوب میشوند.
برای مثال، یک دنباله از نوع استرینگ را میتوان نام برد که تکتک حروف در آن قابلدسترسی هستند به طوری که میتوانیم حروف اول و آخر آن را در خروجی چاپ کنیم. به طور کلی، دنبالهها انواع زیادی دارند که دیتا تایپ لیست یکی از ملموسترین و قابلفهمترین دنبالهها برای برنامهنویسان است چرا که در دنیای واقعی نیز نمودِ عینی دارد.
حال به منظور درک بهتر این موضوع، به بررسی نحوۀ تعریف دیتا تایپ لیست در زبان برنامهنویسی پایتون میپردازیم که برای این منظور از علائم []
استفاده میکنیم و آبجکتهای مد نظر را مابین این دو کروشه قرار داده و هر یک را با علامت ,
از هم جدا میکنیم. برای مثال، لیستهای زیر را در نظر میگیریم:
>>> listA = [1, 2, 3, 4]
>>> listB = ["Spring", "Summer", "Autumn", "Winter"]
>>> listC = ["One", 2, "Three", 4, False]
>>> listD = [True, False]
>>> listE =[]
>>> listF = [listA, listB, [1, 2, 3]]
همانطور که میبینید، تعداد اعضای لیستها متفاوت بوده و میتوانیم در هر یک از آنها به تعداد دلخواه آبجکتهای مختلفی قرار دهیم به طوری که هر عضو لیست در محلی مجزا از یک فضای به هم پیوسته در حافظۀ سیستم قرار گرفته و هر یک از آیتمهای جدید نیز در محلی منحصربهفرد به این فضا افزوده میشوند.
هشدار |
پایتون بر خلاف بسیاری از زبانهای برنامهنویسی دیگر امکان ذخیرۀ انواع مختلف دادهها در آبجکتهایی از نوع لیست را برای برنامهنویسان فراهم میکند اما توجه داشته باشیم که این موضوع ممکن است منجر به بروز اشتباه در زمان کار با لیستها شود و از همین روی بهتر است آبجکتهای همنوع را در یک لیست ذخیره کنیم. |
به منظور دسترسی به هر یک از اعضای ذخیرهشده در یک لیست، اندیسی به هر یک از آنها نسبت داده میشود که اختصاص اندیس به اعضای لیستها از شمارۀ 0 آغاز شده و به ترتیب با یک واحد افزایش ادامه مییابد.
در تفسیر مثال فوق باید بگوییم که آبجکتی تحت عنوان listA
تعریف کردهایم که عضو اول آن اندیس 0، عضو دوم اندیس 1، عضو سوم اندیس 2 و در نهایت عضو آخر (یا عدد صحیح 4) اندیس 3 را دارا است و نیاز به توضیح نیست که اندیس اختصاصیافته به آخرین عضو لیست، یک واحد کمتر از تعداد اعضای لیست است.
نکته |
هر آبجکت از نوع لیست در زبان پایتون میتواند اعضایی با دیتا تایپهای مختلف داشته باشد. |
با توجه به نکتۀ فوق میتوان گفت که یک آبجکت از نوع لیست قابلیت ذخیرهسازی انواع مختلف دادهها را دارا است و در مثال بیانشده در این آموزش نیز آبجکت listC
برخلاف دو لیست اول از دادههایی با چند دیتا تایپ مختلف همچون دادههایی از جنس استرینگ، عدد صحیح و مقدار بولین تشکیل شده است.
همانطور که در مثال فوق میبینید، لیست سوم تحت عنوان listE
یک لیست خالی و بدون عضو است اما به هر حال با بهکارگیری علائم []
نوع این آبجکت را لیست تعریف کردهایم که برای مفسر پایتون نیز معرف یک لیست میباشد و در نهایت، آبجکتی تحت عنوان listF
داریم که تمامی اعضای آن خود یک لیست هستند (گفتیم که اعضای یک لیست میتوانند انواع متفاوت و دلخواهی داشته باشند و از همین روی در این مثال لیستی متشکل از چند لیست تودرتو تعریف کردهایم.)
برای حصول اطمینان نوع دادهٔ مد نظر، فانکشنی اصطلاحاً Built-in در زبان پایتون تحت عنوان ()type
را مورد استفاده قرار میدهیم تا نوع دادۀ آبجکت listE
را بررسی کنیم:
>>> type(listE)
<class 'list'>
همانطور که انتظار داشتیم، آبجکت listE
متعلق به کلاس list
میباشد.