فصل دهم آموزش پایتون مقدماتی - لیست ها (انتشار: 1402/08/03)
اساسیترین ساختمان داده در پایتون، دنبالهها هستند. هر عنصر از دنباله، عددی را برای تعیین موقعیت یا اندیس خود دارد. اندیس اول برابر صفر، دومی برابر یک و الی آخر است. پایتون از شش نوع دنباله پشتیبانی میکند که رایجترین آنها، لیست و چندتایی هستند. ما نیز در این فصل، به بحث در مورد لیستها و در فصل بعدی در مورد چندتاییها خواهیمپرداخت. کارهایی هستند که شما میتوانید با همه نوع دنباله انجامدهید. این عملیات شامل اندیسگذاری، برش، جمع، ضرب و بررسیعضویت هست. علاوه بر اینها، پایتون دارای چندین تابع داخلی برای پیداکردن طول دنباله، بزرگترین و کوچکترین عضو دنباله است.
10-1- لیست در پایتون
لیستها در پایتون، متنوعترین نوع داده هستند. آنها دنبالهای از مقادیر جداشده توسط کاما هستند که مابین براکتهای مربعی یا همان [ ] قرار میگیرند. مهمترین مزیت لیست، عدم نیاز به یک نوع بودن عناصر موجود در آن است. همان طوری که در شکل (10-1) میبینید، ساخت یک لیست، بسیار راحت و ساده است.
اغلب کارهایی که میتوان با لیست انجامداد، مشابه رشته است.
10-2- دسترسیبه مقادیر لیستها
برای این کار کافیاست همانند شکل (10-2) اندیس ویا اندیسهای مورد نیاز را درون براکت قراردهیم. چنانچه مشاهده میکنید در لیست اول عناصری از هر دو نوع رشتهای و عددی داریم.
همان طوری که در شکل (10-3) میبینید، خروجی دستور چاپ اول، فقط یک عنصر و به عبارت دیگر، یک رشته خواهدبود. همچنین برای چاپ دوم، لیستی از اعداد 2 الی 5 را داریم. البته آخرین اندیس تعیینشده که مقداری برابر 6 دارد، در خروجی نخواهدبود.
لازم به ذکر است که اگر از اعداد منفی برای دسترسی به اندیسها استفادهنماییم، با حفظ اندیس صفر برای اولین عضو، شمارش بقیه از سمت راست خواهدبود. بنابراین اندیس منفییک به آخرین عضو و اندیس منفیدو به یکی مانده به آخر اشاره خواهدداشت. همچنین اگر اندیس ابتدایی را مشخصکرده و انتهایی را مشخصنکنیم، منظور تا اندیس آخر خواهدبود. شکل (10-4) نمایانگر این مطالب است. خروجی این مثال را در شکل (10-5) میبینید.
10-3- بهروز رسانی لیست
همان گونه که در شکل (10-6) خواهیددید، شما میتوانید مقدار یک یا چندین عنصر از لیست را با استفاده از عملگر انتساب تغییردهید. همچنین به وسیله ( ) append عنصر جدیدی را به لیست افزود که این بحث را در بخش دیگری از این فصل بررسی خواهیمکرد.
ابتدا مقدار اندیس 2 از لیست، به 2001 تغییر میکند. با توجه به اینکه در خط بعدی 3 اندیس برای تغییر در نظرگرفته شده ولی تنها دو مقدار برای آنها انتصاب دادیم، مقادیر اندیسهای صفر و یک به 2019 و 2018 تغییر مییابد. بنابراین لیست جدیدی در خروجی شکل (10-7) ظاهر میشود.
10-4- حذف عناصر از لیست
برای حذف یک ویا چند عنصر از لیست، میتوان از دستور del و یا متد ( ) remove استفادهکرد. اگر اندیس عنصر مدنظر را میدانید، از روش اول و در غیر این صورت از دومی استفادهنمایید. در شکل (10-8) مثالهایی در مورد دستور del خواهیمداشت. در مورد روش بعدی نیز در بخش مجزا بحث خواهیمکرد.
در این قطعه کد ابتدا مقدار اندیس 2 حذف میشود. حال با توجه به اینکه دستور del در لسیت، آخرین اندیس را در نظر گرفته نمیگیرد،مقادیر اندیسهای صفر و یک حذف میشود. که در نهایت لیست ما حاوی فقط یک عنصر خواهدبود. خروجی این مثال را در شکل (10-9) میبینید.
10-5- عملیات پایهی لیست
همانند رشته، در لیست میتوان از عملگرهای + و * استفادهکرد. اولی برای اتصال چند لیست به هم و دومی برای تکرار یک لیست به تعداد تعیینشده، خواهدبود. همان طوری که در شکل (10-10) میبینید، خروجی نهایی این عملگرها، یک لیست است. همچنین چگونگی محاسبهی طول لیست، بررسی عضویت و نحوهی ایجاد یک حلقه تکرار را نیز در این شکل توضیح دادهایم.
10-6- توابع داخلی لیستها
بر خلاف تعداد زیاد توابع داخلی مربوط به رشتهها، زبان پایتون از تعداد محدودتر این توابع برای لیست پشتیبانی میکند. در ادامه به توضیح هریک از آنها خواهیمپرداخت.
10-6-1- توابع Max و Min
این توابع میتوانند به ترتیب، بزرگترین و کوچکترین عنصر از یک لیست را برگردانند. روش و معیار مقایسه در تابع مذکور به صورت عناصر داخل لیست است. همچنین در نظر داشته باشید برای استفاده از این توابع بایستی تمامی عناصر لیست از یک نوع داده باشند. برای نمونه شکل (10-11) را میبینیم.
نتیجه اجرای این قطعه کد به صورت شکل (10-12) است.
10-6-2- تابع List
ورودی این تابع، یک چندتایی و خروجی آن، یک لیست است. بنابراین اگر بخواهیم یک چندتایی را به نوع داده لیست تبدیلکنیم، به راحتی میتوان از این تابع استفادهکرد. همان گونه که در شکل (10-13) میبینید، عمده تفاوت چندتایی با لیست در علامتهای ( ) با [ ] است.
خروجی اینمثال را در شکل (10-14) نشاندادیم.
10-7- متدهای کار با لیستها
همانند توابع داخلی، تعداد محدودی از متدها برای لیستها وجود دارند که در ادامه به توضیح آنها میپردازیم.
10-7-1- متد Count
همان طوری که در شکل (10-15) مشاهده میکنید، برای یافتن تعداد یک عنصر خاص در لیست موجود، از این متد استفاده میشود. خروجی این شکل به ترتیب مقادیر 2 و 1 است.
10-7-2- متد Index
در صورتی که به دنبال یافتن اولین اندیس ظاهرشدن عنصری از لیست باشیم، از این متد استفاده میکنیم. برای مثال در شکل (10-16) عنصر ‘xyz’ در اندیسهای 1 و 3 ظاهر شدهاست ولی این متد مقدار 1 را برمیگرداند.
10-7-3- متد Insert
با مشخصنمودن شمارهی اندیس و مقدار عنصر آن و با استفاده از این متد میتوان عنصر مدنظر را در اندیس مشخصشده درجکرد. شکل (10-17) نمونهای از کاربرد این متد را نشان میدهد.
در شکل (10-18) میبینیم که عدد 2009 در محل اندیس سوم، یعنی عنصر چهارم جای گرفته است.
10-7-4- متد Append
برخلاف ( ) insert، این متد، عنصر مدنظر را به انتهای لیست اضافه میکند. به عنوان مثال، در شکل (10-19)، مقدار 2009 به لیست ما افزوده میشود.
خروجی این مثال، به شکل (10-20) خواهدشد.
10-7-5- متد Extend
این متد همانند ( ) append عمل میکند. با این تفاوت که به جای یک عنصر، یک لیست را به انتهای لیست مدنظر اضافه میکند. در شکل (10-21) لیست bList به انتهای aList افزوده میشود. درنهایت، خروجی ما به شکل (10-22) خواهدبود.
10-7-6- متد Remove
برای حذف اولین مورد مشاهدهشده از یک عنصر خاص در لیست، اینمتد را بهکار میگیریم. در شکل (10-23) دو مورد از عنصر ‘xyx’ موجود است که تنها اولین مورد از آن با متد ( ) remove حذف خواهدشد. به عبارت دیگر، همیشه اندیس کوچکتر حذف خواهدشد.
در شکل (10-24)، خروجی این قطعه کد را نشان دادیم.
10-7-7- متد Pop
در صورتی که هیچ اندیسی برای این متد مشخصنشود، مقدار آخرین عنصر لیست را برگردانده و سپس آن را از لیست حذف میکند. چنانچه در شکل (10-25) مشاهده مینمایید، اگر اندیس تعیینگردد، آنعنصر در خروجی ظاهرشده و سپس از لیست حذف خواهدشد. لازم به ذکر است که این متد خود لیست را برنمیگرداند. برای اینکار بایستی از دستور مجزا استفادهکنید که ما در این مثال، از دستور چاپ استفادهکردیم.
در مثال اول این شکل، ابتدا عنصر ‘abc’ چاپشده و سپس حذف میشود و در مثال دوم این کار برای عنصر اندیس 2 یعنی ‘zara’ انجام خواهدشد. خروجی این قطعه کد را در شکل (10-26) میبینید.
10-7-8- متد Sort
همان گونه که از اسم آن پیداست، میتوان برای مرتبسازی لیستها، از آن استفادهکرد. همان طوری که در از قبل اشارهکردیم، بایستی تمامی داده های لیست در این متد از یک نوع باشند. شکل (10-27) بیانگر این مطلب است. لیست مرتبشده را در شکل (10-28) میبینید.
10-7-9- متد Reverse
برای معکوسسازی لیست میتوان از این متد استفادهکرد. نمونهای از متد فوق را درشکل (10-29) مشاهده میکنید.
در نهایت خروجی مثال ما به شکل (10-30) خواهدبود.
در پست بعدی به Tuple یا چندتایی خواهیم پرداخت. با ما همراه باشین.
نظرات خوانندگان نوشته
نظری در این مورد دارید؟ خوشحال میشیم اون رو برامون ارسال کنید.