فصل دهم آموزش پایتون مقدماتی - لیست ها (انتشار: 1402/08/03)

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

این چیه؟

10-1- لیست در پایتون

لیست‌‌ها در پایتون، متنوع‌‌ترین نوع داده هستند. آن‌‌ها دنباله‌‌ای از مقادیر جداشده توسط کاما هستند که مابین براکت‌‌های مربعی یا همان [ ] قرار می‌‌گیرند. مهم‌‌ترین مزیت لیست، عدم نیاز به یک نوع بودن عناصر موجود در آن است. همان طوری که در شکل (10-1) می‌‌بینید، ساخت یک لیست، بسیار راحت و ساده است.

پایتون-شکل1-10

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

10-2- دسترسی‌‌به مقادیر لیست‌‌ها

برای این کار کافی‌‌است همانند شکل (10-2) اندیس ویا اندیس‌‌های مورد نیاز را درون براکت قراردهیم. چنان‌‌چه مشاهده می‌‌کنید در لیست اول عناصری از هر دو نوع رشته‌‌ای و عددی داریم.

پایتون-شکل2-10

همان طوری که در شکل (10-3) می‌‌بینید، خروجی دستور چاپ اول، فقط یک عنصر و به عبارت دیگر، یک رشته خواهدبود. همچنین برای چاپ دوم، لیستی از اعداد 2 الی 5 را داریم. البته آخرین اندیس تعیین‌‌شده که مقداری برابر 6 دارد، در خروجی نخواهدبود.

پایتون-شکل3-10

لازم به ذکر است که اگر از اعداد منفی برای دسترسی به اندیس‌‌ها استفاده‌‌نماییم، با حفظ اندیس صفر برای اولین عضو، شمارش بقیه از سمت راست خواهدبود. بنابراین اندیس منفی‌‌یک به آخرین عضو و اندیس منفی‌‌دو به یکی مانده به آخر اشاره خواهدداشت. همچنین اگر اندیس ابتدایی را مشخص‌‌کرده و انتهایی را مشخص‌‌نکنیم، منظور تا اندیس آخر خواهدبود. شکل (10-4) نمایانگر این مطالب است. خروجی این مثال را در شکل (10-5) می‌‌بینید.

پایتون-شکل4-10
پایتون-شکل5-10

10-3- به‌‌روز رسانی لیست

همان گونه که در شکل (10-6) خواهیددید، شما می‌‌توانید مقدار یک یا چندین عنصر از لیست را با استفاده از عملگر انتساب تغییر‌‌دهید. همچنین به وسیله ( ) append عنصر جدیدی را به لیست افزود که این بحث را در بخش دیگری از این فصل بررسی خواهیم‌‌کرد.

پایتون-شکل6-10

ابتدا مقدار اندیس 2 از لیست، به 2001 تغییر می‌‌کند. با توجه به این‌‌که در خط بعدی 3 اندیس برای تغییر در نظرگرفته شده ولی تنها دو مقدار برای آن‌‌ها انتصاب دادیم، مقادیر اندیس‌‌های صفر و یک به 2019 و 2018 تغییر می‌‌یابد. بنابراین لیست جدیدی در خروجی شکل (10-7) ظاهر می‌‌شود.

پایتون-شکل7-10

10-4- حذف عناصر از لیست

برای حذف یک ویا چند عنصر از لیست، می‌‌توان از دستور del و یا متد ( ) remove استفاده‌‌کرد. اگر اندیس عنصر مدنظر را می‌‌دانید، از روش اول و در غیر این صورت از دومی استفاده‌‌نمایید. در شکل (10-8) مثال‌‌هایی در مورد دستور del خواهیم‌‌داشت. در مورد روش بعدی نیز در بخش مجزا بحث خواهیم‌‌کرد.

پایتون-شکل8-10

در این قطعه کد ابتدا مقدار اندیس 2 حذف می‌‌شود. حال با توجه به این‌‌که دستور del در لسیت، آخرین اندیس را در نظر گرفته نمی‌‌گیرد،مقادیر اندیس‌‌های صفر و یک حذف می‌‌شود. که در نهایت لیست ما حاوی فقط یک عنصر خواهدبود. خروجی این مثال را در شکل (10-9) می‌‌بینید.

پایتون-شکل9-10

10-5- عملیات پایه‌‌ی لیست

همانند رشته، در لیست می‌‌توان از عملگرهای + و * استفاده‌‌کرد. اولی برای اتصال چند لیست به هم و دومی برای تکرار یک لیست به تعداد تعیین‌‌شده، خواهد‌‌بود. همان طوری که در شکل (10-10) می‌‌بینید، خروجی نهایی این عملگرها، یک لیست است. همچنین چگونگی محاسبه‌‌ی طول لیست، بررسی عضویت و نحوه‌‌ی ایجاد یک حلقه تکرار را نیز در این شکل توضیح داده‌‌ایم.

پایتون-شکل10-10

10-6- توابع داخلی لیست‌‌ها

بر خلاف تعداد زیاد توابع داخلی مربوط به رشته‌‌ها، زبان پایتون از تعداد محدودتر این توابع برای لیست پشتیبانی می‌‌کند. در ادامه به توضیح هریک از آن‌‌ها خواهیم‌‌پرداخت.

10-6-1- توابع Max و Min

این توابع می‌‌توانند به ترتیب، بزرگترین و کوچکترین عنصر از یک لیست را برگردانند. روش و معیار مقایسه در تابع مذکور به صورت عناصر داخل لیست است. همچنین در نظر داشته باشید برای استفاده از این توابع بایستی تمامی عناصر لیست از یک نوع داده باشند. برای نمونه شکل (10-11) را می‌‌بینیم.

پایتون-شکل11-10

نتیجه اجرای این قطعه کد به صورت شکل (10-12) است.

پایتون-شکل12-10

10-6-2- تابع List

ورودی این تابع، یک چندتایی و خروجی آن، یک لیست است. بنابراین اگر بخواهیم یک چندتایی را به نوع داده لیست تبدیل‌‌کنیم، به راحتی می‌‌توان از این تابع استفاده‌‌کرد. همان گونه که در شکل (10-13) می‌‌بینید، عمده تفاوت چندتایی با لیست در علامت‌‌های ( ) با [ ] است.

پایتون-شکل13-10

خروجی این‌‌مثال را در شکل (10-14) نشان‌‌دادیم.

پایتون-شکل14-10

10-7- متدهای کار با لیست‌‌ها

همانند توابع داخلی، تعداد محدودی از متدها برای لیست‌‌ها وجود دارند که در ادامه به توضیح آن‌‌ها می‌‌پردازیم.

10-7-1- متد Count

همان طوری که در شکل (10-15) مشاهده می‌‌کنید، برای یافتن تعداد یک عنصر خاص در لیست موجود، از این متد استفاده می‌‌شود. خروجی این شکل به ترتیب مقادیر 2 و 1 است.

پایتون-شکل15-10

10-7-2- متد Index

در صورتی که به دنبال یافتن اولین اندیس ظاهرشدن عنصری از لیست باشیم، از این متد استفاده می‌‌کنیم. برای مثال در شکل (10-16) عنصر ‘xyz’ در اندیس‌‌های 1 و 3 ظاهر شده‌‌است ولی این متد مقدار 1 را برمی‌‌گرداند.

پایتون-شکل16-10

10-7-3- متد Insert

با مشخص‌‌نمودن شماره‌‌ی اندیس و مقدار عنصر آن و با استفاده از این متد می‌‌توان عنصر مدنظر را در اندیس مشخص‌‌شده درج‌‌کرد. شکل (10-17) نمونه‌‌ای از کاربرد این متد را نشان می‌‌دهد.

پایتون-شکل17-10

در شکل (10-18) می‌‌بینیم که عدد 2009 در محل اندیس سوم، یعنی عنصر چهارم جای گرفته است.

پایتون-شکل18-10

10-7-4- متد Append

برخلاف ( ) insert، این متد، عنصر مدنظر را به انتهای لیست اضافه می‌‌کند. به عنوان مثال، در شکل (10-19)، مقدار 2009 به لیست ما افزوده می‌‌شود.

پایتون-شکل19-10

خروجی این مثال، به شکل (10-20) خواهدشد.

پایتون-شکل20-10

10-7-5- متد Extend

این متد همانند ( ) append عمل می‌‌کند. با این تفاوت که به جای یک عنصر، یک لیست را به انتهای لیست مدنظر اضافه می‌‌کند. در شکل (10-21) لیست bList به انتهای aList افزوده می‌‌شود. درنهایت، خروجی ما به شکل (10-22) خواهدبود.

پایتون-شکل21-10
پایتون-شکل22-10

10-7-6- متد Remove

برای حذف اولین مورد مشاهده‌‌شده از یک عنصر خاص در لیست، این‌‌متد را به‌‌کار می‌‌گیریم. در شکل (10-23) دو مورد از عنصر ‘xyx’ موجود است که تنها اولین مورد از آن با متد ( ) remove حذف خواهدشد. به عبارت دیگر، همیشه اندیس کوچکتر حذف خواهدشد.

پایتون-شکل23-10

در شکل (10-24)، خروجی این قطعه کد را نشان دادیم.

پایتون-شکل24-10

10-7-7- متد Pop

در صورتی که هیچ اندیسی برای این متد مشخص‌‌نشود، مقدار آخرین عنصر لیست را برگردانده و سپس آن را از لیست حذف می‌‌کند. چنان‌‌چه در شکل (10-25) مشاهده می‌‌نمایید، اگر اندیس تعیین‌‌گردد، آن‌‌عنصر در خروجی ظاهرشده و سپس از لیست حذف خواهدشد. لازم به ذکر است که این متد خود لیست را بر‌‌نمی‌‌گرداند. برای این‌‌کار بایستی از دستور مجزا استفاده‌‌کنید که ما در این مثال، از دستور چاپ استفاده‌‌کردیم.

پایتون-شکل25-10

در مثال اول این شکل، ابتدا عنصر ‘abc’ چاپ‌‌شده و سپس حذف می‌‌شود و در مثال دوم این کار برای عنصر اندیس 2 یعنی ‘zara’ انجام خواهدشد. خروجی این قطعه کد را در شکل (10-26) می‌‌بینید.

پایتون-شکل26-10

10-7-8- متد Sort

همان گونه که از اسم آن پیداست، می‌‌توان برای مرتب‌‌سازی لیست‌‌ها، از آن استفاده‌‌کرد. همان طوری که در از قبل اشاره‌‌کردیم، بایستی تمامی داده های لیست در این متد از یک نوع باشند. شکل (10-27) بیانگر این مطلب است. لیست مرتب‌‌شده را در شکل (10-28) می‌‌بینید.

پایتون-شکل27-10
پایتون-شکل28-10

10-7-9- متد Reverse

برای معکوس‌‌سازی لیست می‌‌توان از این متد استفاده‌‌کرد. نمونه‌‌ای از متد فوق را درشکل (10-29) مشاهده می‌‌کنید.

پایتون-شکل29-10

در نهایت خروجی مثال ما به شکل (10-30) خواهد‌‌بود.

پایتون-شکل30-10

 

در پست بعدی به Tuple یا چندتایی خواهیم پرداخت. با ما همراه باشین.


نظرات خوانندگان نوشته


نظری در این مورد دارید؟ خوشحال می‌شیم اون رو برامون ارسال کنید.