سطح مقدماتی (Beginner Level)
لیستها (Lists) یکی از مهمترین و پرکاربردترین ساختارهای داده در پایتون هستند. آنها مجموعهای از آیتمها هستند که ترتیب دارند (Ordered) و قابل تغییر (Mutable) میباشند.
۱. ساخت لیست و دسترسی به عناصر
برای ساخت لیست از براکت [] استفاده میکنیم. هر آیتم با کاما , جدا میشود.
مثال ۱: ساخت لیست ساده
مثال ۲: دسترسی با ایندکس (Index)
ایندکسها در پایتون از صفر شروع میشوند.
۲. برش دادن لیست (Slicing)
شما میتوانید بخشی از لیست را با استفاده از عملگر : استخراج کنید. فرمت کلی [start:stop:step] است.
مثال ۱: برش ساده
مثال ۲: گام حرکت (Step)
۳. متدهای پایه (افزودن و حذف کردن)
چون لیستها Mutable هستند، میتوانید محتوای آنها را تغییر دهید.
مثال ۱: اضافه کردن با append و insert
متد append به انتهای لیست اضافه میکند، اما insert در جایگاه مشخصی قرار میدهد.
مثال ۲: حذف کردن با pop و remove
مثال ۳: تغییر مقدار یک آیتم
# این قطعه کد اجرایی نیست و فقط سینتکس را نشان میدهد
my_list = [10, 20, 30]
my_list[0] = 99 # تغییر مقدار اولین خانه
سطح پیشرفته (Professional Level)
در این بخش به مفاهیم عمیقتر مانند نحوه مدیریت حافظه در لیستها، List Comprehension و کپیهای سطحی و عمیق میپردازیم.
۱. List Comprehensions
این قابلیت پایتون به شما اجازه میدهد تا لیستهای جدید را به صورت فشرده و در یک خط بر اساس لیستهای موجود بسازید. این روش معمولاً سریعتر از حلقههای for معمولی است.
مثال ۱: ساخت لیست توان دوم
مثال ۲: فیلتر کردن با شرط (Conditional Logic)
مثال ۳: شرطهای پیچیده (if-else در Comprehension)
۲. کپی کردن لیستها (Shallow vs Deep Copy)
یکی از خطاهای رایج برنامهنویسان، کپی کردن لیست با علامت = است. در پایتون، انتساب نام لیست به متغیر دیگر، فقط رفرنس (آدرس حافظه) را کپی میکند، نه خود دادهها را.

مثال ۱: مشکل کپی با ارجاع
مثال ۲: کپی صحیح (Shallow Copy)
برای جلوگیری از مشکل بالا، باید یک کپی جدید بسازید.
۳. باز کردن لیست (Unpacking)
آنپکینگ به شما اجازه میدهد عناصر لیست را مستقیماً به متغیرها اختصاص دهید.
مثال ۱: آنپکینگ ساده
مثال ۲: استفاده از * (Asterisk)
اگر تعداد متغیرها با تعداد عناصر لیست برابر نباشد، میتوان بقیه موارد را در یک لیست جدید جمع کرد.
۴. مرتبسازی: sort() در برابر sorted()
تفاوت مهمی بین این دو وجود دارد: sort لیست اصلی را تغییر میدهد (In-place)، اما sorted یک لیست جدید برمیگرداند و لیست اصلی دستنخورده میماند.