لیست در پایتون چیست؟ – نحوه کار با آن به زبان ساده


پایتون، یکی از محبوبترین زبانهای برنامهنویسی کنونی در دنیا محسوب میشود که همهمنظوره است و در حوزههای گوناگون، بهخصوص علم داده و هوش مصنوعی یا AI مورد استفاده قرار میگیرد. ساختارهای دادهای یا ساختمان دادهها را نیز میتوانیم ظرفهایی تصور کنیم دادهها را با توجه به نوعی که دارند، سازماندهی میکنند. زبان پایتون شامل ساختمان دادههای متعددی است که در مواردی نظیر تغییرپذیری و مرتببودن و غیره با هم تفاوت دارند. در این مطلب از مجله فرادرس یاد میگیریم که لیست در پایتون چیست و نحوه تعریف آن به چه صورتی است. همچنین مثالهای گوناگونی را برای درک بهتر List-ها که یکی از پراستفادهترین ساختمان دادههای موجود در پایتون هستند، بیان میکنیم.
لیست در پایتون چیست؟
لیستهای پایتون، مجموعهای «قابل تغییر» از عناصر - یا آیتمهای - گوناگون هستند که تحت نام متغیری واحد ذخیره میشوند. منظور از «قابل تغییر بودن» در اینجا، به این معناست که عناصر موجود در لیست را میتوان هنگام اجرای برنامه، تغییر داد. همچنین، هر زمان که لازم بود میتوانیم عناصری را از لیست، حذف کنیم یا موارد جدیدی را به آن اضافه کنیم.
در زبان پایتون، برای تعریف یک لیست کافی است تا عناصر مورد نظر را بین براکتهایی قرار داده و با کاما از هم جدا کنیم. هر عنصر از لیست ساختهشده دارای شماره ایندکسی است که موقعیت عنصر در لیست را نشان میدهد و مقدار آن از صفر شروع میشود.

«لیستها» (Lists) یکی از پرکاربردترین ساختمان دادههای تعبیهشده درون زبان پایتون هستند. برای ایجاد لیست در پایتون کافی است عناصر یا آیتمهای مورد نظر را درون برکتهای باز و بسته [ ] قرار داده و آنها را با کاما , از هم جدا کنیم. لیستهای پایتون میتوانند شامل هر نوع «شیئی» (Object) باشند و این ویژگی، باعث سودمندی آنها میشود. ضمن اینکه در مواقع متعددی در پروژههایمان قابل استفاده هستند.
بهطور مثال دستور زیر، لیستی بهنام num_list حاوی اعداد ۱ تا ۵ را ایجاد میکند.
خصوصیات لیست در پایتون چیست؟
خصوصیات اصلی لیستها در پایتون را در ادامه آوردهایم.
- «تغییرپذیری» (Mutable)
- «مرتب بودن» (Ordered)
- پویا یا «داینامیک بودن» (Dynamic)
- از نوع آرایه یا «دنبالهای بودن» (Sequence)
در ادامه، این خصوصیت را توضیح دادهایم.
Mutable بودن لیست در پایتون چیست؟
لیستهای پایتون پس از ایجاد، قابل تغییر هستند. یعنی میتوانیم آیتمهایی را به آن اضافه یا از آن حذف کنیم. همچنین امکان تغییر مقادیر آیتمهای موجود در شی لیست نیز وجود دارد. به بیان دیگر، برای تغییر شی لیست، نیازی به داشتن کپی دیگری از آن نداریم. بههمین دلیل به اشیایی تغییرپذیر شناخته میشوند.

Ordered بودن لیست در پایتون چیست؟
ترتیبی که هنگام تعریف لیست برای آیتمهای درون آن مشخص میشود، در ادامه نیز حفظ میشوند. بنابراین، لیستها ساختمان دادهای مرتب هستند.
Dynamic بودن لیست در پایتون چیست؟
در زمان اجرا میتوان آیتمهای مورد نظر را به List-ها اضافه یا از آن حذف کنیم. لیستها بهطور کلی، اشیای با اندازه ثابت نیستند. بههمین دلیل ساختمان دادههایی داینامنیک نامیده میشوند.
Sequence بودن لیست در پایتون چیست؟
هرچند که لیستهای پایتون همچون آرایههای C++ یا جاوا، محدود و دارای اندازه ثابت نیستند. با این حال هنوز هم ساختمان دادهای از نوع آرایه محسوب میشوند که عناصر آنها بهصورت متوالی در حافظه ذخیره میشوند و بهوسیله شماره Index که بیانگر بلوک حافظه برای عنصری خاص است، قابل دسترسی هستند. اما تفاوت لیست و آرایه در پایتون قابل چشم پوشی نیست.
نکته دیگری که در مورد لیستهای پایتون وجود دارد این است که شی لیست میتواند شامل عناصر تکراری نیز باشد.
نحوه ایجاد لیست در پایتون چیست؟
برای ساختن یک لیست در پایتون چندین روش پیشِ رو داریم که در ادامه آوردهایم.
- استفاده از براکت مانند آنچه در ادامه آوردهایم.
- بهکارگیری متد سازنده list() مانند دستوری که در زیر بیان شده است.
- استفاده از List Comprehensions بهصورتی که در ادامه نوشته شده است.
در یکی از مطالب پیشین مجله فرادرس به توضیح List Comprehensions پرداختهایم.
نحوه دسترسی به عناصر لیست در پایتون چیست؟
برای دسترسی به عناصر موجود در یک لیست، میبایست از شاخصدهی یا همان Indexing استفاده کنیم. توجه داشته باشید که ایندکسها در پایتون از صفر شروع میشوند. یعنی اولین خانه لیست، دارای ایندکس - یا شماره - صفر است.

به قطعه کدی که در ادامه آوردهایم توجه کنید.
نحوه تغییر لیست در پایتون چیست؟
همانطور که پیشتر نیز بیان کردیم، لیستها ساختماندادهای تغییرپذیر هستند. یعنی میتوانیم با تخصیص مقداری جدید به اندیسی خاص یا بهکارگیری متدهای مرتبط با این کار، محتوای لیست را تغییر دهیم. برای نمونه، تکه کدی که در ادامه آوردهایم را در نظر بگیرید.
عملیات رایج روی لیست در پایتون چیست؟
پایتون عملیاتهای متعددی را برای کار با لیستها برایمان فراهم کرده است که در ادامه این موارد را بیان کردهایم.
عمل «الحاق» (Concatenation): به چسباندن لیستها بههم با استفاده از عملگر+ گفته میشود.
عمل «تکرار» (Repetition): به تکرار لیستها با استفاده از عملگر*میپردازد.
عمل «عضویت» (Membership): برای بررسی اینکه آیتمی خاص در یک لیست وجود دارد، in را بهکار میبرند.
List Comprehensions در پایتون چیست؟
List Comprehensions در واقع راه کوتاهتری برای ایجاد لیستها بر اساس دنباله موجود، فراهم میکنند. این روش ضمن بهینهسازی کدهایمان، خوانایی آن را نیز افزایش میدهد.
بهطور مثال، به کدی که در ادامه آوردهایم، توجه کنید.در این کد، لیستی از مربعات را ایجاد میکنیم.

عمل Slicing و Indexing در پایتون چیست؟
«برش» (Slicing) به ما امکان میدهد تا بخشی از یک لیست را از آن بیرون بکشیم. برای انجام این عمل از سینتکس start:stop:step استفاده میکنیم. به مثالی که در ادامه آوردهایم، توجه کنید.
کار با لیستهای تو در تو در پایتون
عناصر موجود در لیستهای پایتون، خود میتوانند یک لیست باشند. در این صورت ساختاری سلسله مراتبی ایجاد میشود که به لیستهای تو در تو شناخته میشوند. برای دسترسی به عناصر موجود در این لیستها از اندیسهای چندتایی استفاده میکنیم.
متدهای لیست در پایتون چیست؟
پایتون، متدهای «درونی» (Built-in) متعددی را برای دستکاری لیستها فراهم کرده است. در ادامه، برخی از این متدهای لیست در پایتون را نام بردهایم.
- متد append()
- متد extend()
- متد insert()
- متد pop()
- متد remove()
- متد sort()
به یاد داشتن متدهای گفته شده، در بهکارگیری موثر این ساختمان داده پایتونی بسیار مهم است.

متد append لیست در پایتون چیست؟
با استفاده از متد append میتوانیم عنصر جدیدی را به لیست موجود اضافه کنیم. کدهای آورده شده در زیر را در نظر بگیرید.
با اجرای این کد، مقدار جدید JavaScript به لیست programming_languages اضافه میشود و لیست نهایی برابر با ["Python", "Java", "C++", "JavaScript"] خواهد بود.
متد extend لیست در پایتون چیست؟
برای افزودن محتویات یک لیست به لیستی دیگر میتوانیم از متد extend()استفاده کنیم. برای نمونه، در قطعه کد زیر یک لیست با ۳ عنصر تعریف کردهایم.
اکنون میخواهیم چندین عنصر را به این لیست اضافه کنیم.
با اجرای این دستور، عناصر موجود در لیستی که به عنوان آرگومان به متد extend() ارسال کردیم به لیست programming_languages اضافه میشود و در نهایت لیستی بهصورت ['Python', 'Java', 'C++', 'JavaScript', 'Ruby'] خواهیم داشت.
متد remove لیست در پایتون چیست؟
لیستی بهصورت ["Python", "Java", "C++", "JavaScript"] را در نظر بگیرید. میخواهیم عنصرJava را از این لیست حذف کنیم. این کار با بهکارگیری متد remove()به شکلی که در ادامه آورده شده، قابل انجام است.
پس از اجرای این دستور، لیست اولیه بهصورت ["Python", "C++", "JavaScript"] خواهد بود.
دستور del در لیست پایتون چیست؟
برای حذف عنصری از لیست پایتون میتوانیم از کلمه کلیدی del بههمراه ایندکس خانه مورد نظر در لیست استفاده کنیم.
این دستور پس از اجرا، عنصر اول از لیست programming_languages را حذف میکند.

متد insert لیست در پایتون چیست؟
فرض کنید لیست programming_languages شامل ["Python", "Java", "C++"] وجود دارد. با استفاده از متد insert() و مشخص کردن شماره ایندکس میتوانیم مقدار جدیدی را به مکان مورد نظر در این لیست اضافه کنیم.
با اجرای این دستور، مقدار "JavaScript" به لیست ما و در جایگاه ایندکس ۱ اضافه میشود. یعنی لیست جدید بهصورت ["Python", "JavaScript", "Java", "C++"] خواهد بود.
متد pop در لیست در پایتون چیست؟
دستور pop در پایتون، آیتم موجود در ایندکس مورد نظر را حذف و مقدار آن را بر میگرداند. لیست زیر را در نظر بگیرید.
حال، از متد pop() بهصورت زیر استفاده میکنیم.
با این کار، لیست programming_languages برابر با ['Python', 'C++'] خواهد شد. مقدار حذف شده یعنی "Java" نیز در متغیر popped_language قرارمیگیرد.
متدهای index و count لیست در پایتون
فرض کنید لیستی بهصورت زیر داریم.
اکنون میخواهیم شماره ایندکس مقدار Java را بیابیم. برای این منظور از تابع Index در پایتون بهصورت زیر استفاده میکنیم.
پس از اجرای این کد، مقدار متغیر index_of_java برابر با 1 خواهد بود. همچنین، اگر بخواهیم تعداد رخداد عنصری را در یک لیست بررسی کنیم، از متد count() کمک میگیریم.
با اجرای این کد، مقدار برگردانده شده درcount_of_python برابر با تعداد وقوع عنصر "Python" یعنی 2 خواهد بود.
متدهای sort و sorted لیست در پایتون
با فرض اینکه لیستی به شکل آورده شده در زیر داریم، اگر بخواهیم عناصر موجود در این لیست پایتونی را بهصورت الفبایی مرتب کنیم، از متد sort() کمک میگیریم.
پس از اجرای این کد، عناصر لیست بهصورت ['C++', 'Java', 'Python'] مرتب خواهند شد. همچنین با sorted() و تنظیم پارامتر reverse=True لیست ما بهصورت برعکس مرتب میشود.
در نتیجه، ترتیب آن بهشکل ['Python', 'Java', 'C++'] در reversed_languages ذخیره خواهد شد.
نحوه ایجاد کپی یک لیست برای جلوگیری از لیست اصلی
با فرض اینکه لیستی بهنام programming_languages داریم، برای ایجاد یک کپی از این لیست، از copy() بهصورت استفاده میکنیم.
اکنون copied_languages، لیستی است که تغییر در آن، لیست اصلی را تحت تأثیر قرار نمیدهد.
پاکسازی عناصر لیست با clear
برای پاک کردن همه عناصر موجود یک لیست فرضی programming_languages ، از clear() بهصورت زیر استفاده میکنیم.
با انجام این کار، لیست ما تهی یا [] میشود.
محاسبه طول، مجموع، مقدار Min و Max عناصر یک لیست در پایتون
فرض کنید لیستی بهنام numbers شامل تعدادی عناصر عددی داریم.
با len() میتوانیم طول لیست یا تعداد عناصر آن را محاسبه کنیم. پس مقدار برگردانده شده در متغیر length در خط دوم برابر با 11 خواهد بود.
توابع min() و max() ، کمینه و بیشینه مقادیر لیست - مشخص شده بهعنوان آرگومان - را محاسبه میکنند. پس مقادیر ذخیره شده در min_value و max_value بهترتیب برابر با 1 و 9 خواهد بود.
در خط پنجم، مجموع عناصر لیست را با تابع sum() محاسبه کرده است. بنابراین، مقدار total برابر با 44 خواهد بود.

مثال های مربوط به لیست در پایتون
مثال ایجاد لیست خالی در پایتون
تنها با استفاده از[] میتوانیم یک لیست خالی بسازیم. قطعه کد زیر، لیستی خالی بهنام programming_languages ایجاد میکند.
مثال ایجاد لیست در پایتون
میخواهیم یک لیست پایتونی بهنام programming_languages ایجاد کنیم که شامل ۵ عنصر رشتهای و بیانگر نام زبانهای برنامهنویسی محبوب باشد.
مثال ایجاد لیست تو در تو یا سلسله مراتبی در پایتون
همانطور که گفتیم، لیستهای پایتون میتوانند شامل عناصری - حتی یک لیست دیگر - باشند. قطعه کد زیر لیستی بهنام programming_languages ساخته که شامل ۲ عنصر است. عنصر اول یک لیست ۳ عنصری و عنصر دوم، یک لیست با ۲ عنصر است.
مثال دسترسی به محتویات عنصر اول یک لیست در پایتون
خط اول از قطعه کد زیر، لیستی شامل ۵ عنصر بهنام programming_languages ایجاد کرده است.
در خط دوم، مقدار خانه اول از لیست تعریفشده را بر میگرداند و در متغیر first_language قرار میدهد. توجه داشته باشید که شماره ایندکسها در پایتون از صفر شروع میشوند. بههمین دلیل ایندکس صفر به خانه اول لیست اشاره دارد. پس از اجرای کدهای بالا، مقدار متغیر first_language برابر با Python خواهد بود.

مثال برش یک لیست در پایتون
پایتون، امکان دسترسی به عنصر یا محدودهای از عناصر موجود در لیست را بهوسیله Indexing یا شاخصدهی فراهم کرده است. در خط دوم از قطعه کدهای زیر، محدوده ایندکسهای ۱ تا ۴ - بهجز خود ایندکس ۴ - یعنی محتوای خانههای دوم، سوم و چهارم از لیستprogramming_languages را در لیست subset قرار میدهد.
پس از اجرای این کدها،subset لیستی با ۳ عنصر ['Java', 'C++', 'JavaScript'] خواهد بود. توجه داشته باشید که Indexing در پایتون از عدد صفر شروع میشود.
مثال دسترسی به محتویات عنصر یک لیست در پایتون با Indexing منفی
دسترسی به عناصر یک لیست در پایتون میتواند با شاخصدهی منفی نیز انجام شود. یعنی میتوانیم از ایندکسهای ۱-، ۲- و غیره استفاده کنیم. در این حالت شاخصها از انتهای لیست شروع میشوند. بهطوریکه آخرین عنصر یک لیست دارای شاخص یا ایندکسی برابر با ۱- است، عنصر یکی مانده به آخر ایندکس ۲- را دارد و الی آخر.
این قطعه کد، عنصر آخر لیست لیستprogramming_languages را در متغیر last_language قرار میدهد.
مثال جایگزینی یا اصلاح عنصر مورد نظر لیست در پایتون
برای جایگزینی یا تغییر عنصر موجود در لیست ["Python", "JavaScript", "Java", "C++"] ، تنها کافی است تا مقداری جدید به ایندکس مورد نظر اختصاص بدهیم.
پس از اجرای این کد، ایندکس ۲ - یا همان خانه سوم - از لیست programming_languages برابر با مقدار جدید Ruby خواهد شد و و لیست حاصل برابر با ["Python", "JavaScript", "Ruby", "C++"] میشود.

سوالات متداول
اکنون که دانستیم List در پایتون چیست، برخی از سوالات رایجی که ممکن است در این باره در ذهن داشته باشید را پاسخ میدهیم.
لیستها چه نوع داده ای را نگه میدارند؟
List-ها میتوانند Data Type یا نوع دادههای گوناگونی نظیر عدد صحیح، رشتهها، اعداد اعشاری، حتی سایر لیستها و غیره را در خود نگه دارند.
دلیل اهمیت لیست در پایتون چیست؟
لیستها به دلیل انعطافپذیری بالا، چندمنظوره بودن و استفاده آسان، نقش پررنگی را در برنامهنویسی پایتون ایفا میکنند.
«انعطافپذیری» (Flexibility) لیستهای پایتون میتوانند انواع دادههای گوناگون را ذخیره کنند که این مورد، List-ها را برای استفادههای مختلف بهشدت انعطاف پذیر کرده است.
«چندمنظوره بودن» (Versatility): لیستهای پایتون برای مواردی نظیر ذخیرهسازی دادهها، دستکاری و پیمایش مورد استفاده قرار میگیرند که آنها را به ساختاری مهم در بسیاری از برنامههای پایتونی تبدیل کرده است.
«استفاده آسان» (Ease of Use): پایتون با ارائه مجموعهای از متدها و توابع مرتبط به لیست، انجام عملیات روی لیستها را ساده کرده است.
نحوه تعریف لیست در پایتون چگونه است؟
برای تعریف لیست در پایتون، کافی است تا آیتمها را ما بین علامتهای براکت باز و بسته قرار دهیم و آنها را با براکت از هم جدا کنیم.
جمعبندی
در این مطلب از مجله فرادرس، سعی بر این بوده تا مروری جامع روی ساختمان داده «لیست» (List) در پایتون داشته باشیم و با زبانی ساده نحوه نوشتن و همچنین متدهای کار با آنها را نیز آموزش دهیم.
لیستهای پایتون یکی از ساختار دادههای داینامیک و پرکاربرد بهشمار میروند که دانستن نحوه استفاده از آنها برای هر برنامهنویس پایتون ضروری است. به یاد داشته باشید که تمرین و حل مثالهای مختلف، راز ماهر شدن در هنرهای گوناگون و بهخصوص برنامهنویسی بهشمار میرود. در این مطلب برای درک بهتر، مثالهای متعددی را بیان کردهایم.