لیست (List) در پایتون

پرکاربردترین ساختار داده​

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

در پایتون برای این کار از لیست (List) استفاده می‌کنیم. لیست مجموعه‌ای از داده‌ها است که به ترتیب در کنار هم قرار می‌گیرند و هر عضو دارای شماره (اندیس) مخصوص به خود است.

یکی از مهم‌ترین ویژگی‌های لیست این است که بعد از ایجاد نیز می‌توان آن را تغییر داد؛ یعنی می‌توان اعضای جدید اضافه کرد، اعضا را حذف کرد یا مقدار آن‌ها را تغییر داد.

فهرست مطالب

ایجاد یک لیست

ساده‌ترین روش ایجاد لیست استفاده از کروشه ([]) است.

colors = ["red", "blue", "black", "orange", "green"]
students = ["ali", "nami", "ayda", "yekta"]
scores = [18.5, 19, 18, 16, 17]

در مثال بالا سه لیست مختلف ایجاد کرده‌ایم. هر لیست می‌تواند شامل رشته، عدد یا هر نوع داده دیگری باشد.

لیست می‌تواند انواع مختلف داده را نگهداری کند

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

personal_information = ["Ali", 19, 1.75, False]

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

ساخت لیست با تابع list()

گاهی اوقات به جای استفاده از کروشه، از تابع list() استفاده می‌کنیم.

days = list(("saturday", "monday", "wednesday"))

همچنین می‌توان با استفاده از range() لیستی از اعداد ایجاد کرد.

numbers = list(range(10))

خروجی:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

ایجاد چند عضو یکسان

اگر بخواهیم یک مقدار چندین بار تکرار شود، می‌توانیم از عملگر * استفاده کنیم.

zeros = [0] * 20

در این مثال لیستی شامل ۲۰ عدد صفر ساخته می‌شود.

تعداد اعضای لیست

برای به دست آوردن تعداد اعضای یک لیست از تابع len() استفاده می‌کنیم.

print(len(zeros)

دسترسی به اعضای لیست

هر عضو یک شماره یا اندیس (Index) دارد که از صفر شروع می‌شود.

print(colors[0])
print(colors[1])

برش دادن لیست (Slicing)

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

print(colors[1:3])
print(colors[:3])
print(colors[3:])

خروجی این دستورات یک لیست جدید خواهد بود.

دسترسی به اعضا از انتهای لیست

گاهی نمی‌دانیم لیست چند عضو دارد. در این حالت اندیس‌های منفی بسیار کاربردی هستند.

print(colors[-1])
print(colors[-2])

عدد -1 همیشه آخرین عضو لیست را برمی‌گرداند.

برای مشاهده تمام اعضا:

print(colors[:])

برای نمایش یک در میان اعضا:

print(colors[::2])

برای نمایش لیست به صورت برعکس:

print(colors[::-1])

توجه کنید که این دستور فقط ترتیب نمایش را برعکس می‌کند و خود لیست تغییر نمی‌کند.

تغییر اعضای لیست

از آنجایی که لیست Mutable (قابل تغییر) است، می‌توان مقدار اعضای آن را تغییر داد.

colors[2] = "white"

اضافه کردن عضو جدید

افزودن یک عضو

colors.append("black")

این دستور فقط یک عضو به انتهای لیست اضافه می‌کند.

افزودن چند عضو

colors.extend(["pink", "yellow"])

یا

colors += ["brown", "violet"]

هر دو دستور چند عضو را به انتهای لیست اضافه می‌کنند.

نکته مهم:

append() فقط یک عضو اضافه می‌کند، اما extend() تمام اعضای یک لیست دیگر را به لیست فعلی اضافه می‌کند.

درج عضو در محل دلخواه

colors.insert(2, "gray")

حذف اعضای لیست

حذف آخرین عضو:

colors.pop()

حذف یک عضو مشخص:

colors.remove("white")

حذف چند عضو با استفاده از del

del colors[2:4]
حذف تمام اعضا
colors.clear()

توجه کنید که بعد از اجرای clear() خود لیست حذف نمی‌شود؛ فقط اعضای آن پاک می‌شوند.

بررسی وجود یک عضو در لیست

گاهی لازم است فقط بررسی کنیم که آیا یک مقدار داخل لیست وجود دارد یا خیر. برای این کار از عملگر in استفاده می‌کنیم.

if "blue" in colors:
    print("وجود دارد")

اگر عضو مورد نظر در لیست باشد، نتیجه True و در غیر این صورت False خواهد بود. همچنین اگر بخواهیم بررسی کنیم که یک مقدار در لیست وجود ندارد، از عملگر not in استفاده می‌کنیم.

if "purple" not in colors:
    print("وجود ندارد")

این عملگرها معمولاً قبل از جستجو یا حذف یک عضو استفاده می‌شوند تا از بروز خطا جلوگیری شود.

جستجو در لیست

ابتدا بررسی می‌کنیم که آیا عضو مورد نظر وجود دارد یا خیر.

if "gray" in colors:

سپس می‌توانیم شماره اولین محل قرارگیری آن را پیدا کنیم.

colors.index("gray")

اگر یک عضو چند بار تکرار شده باشد، تعداد آن را می‌توان با دستور زیر به دست آورد.

colors.count("gray")

پیمایش اعضای لیست

برای پردازش تمام اعضا معمولاً از حلقه for استفاده می‌کنیم.

for color in colors:
    print(color)

یا مثلاً دو حرف اول هر رنگ را نمایش دهیم.

for color in colors:
    print(color[:2])

اگر علاوه بر مقدار عضو، شماره جایگاه (ایندکس) آن را نیز بخواهیم از enumerate() استفاده می‌کنیم.

for index, name in enumerate(colors):
    print(index, name)
 

مرتب‌سازی لیست

مرتب‌سازی صعودی:

colors.sort()

مرتب‌سازی نزولی:

colors.sort(reverse=True)

مرتب‌سازی بر اساس طول رشته:

colors.sort(key=len)

مرتب‌سازی بدون توجه به حروف بزرگ و کوچک:

colors.sort(key=str.lower)
گاهی نمی‌خواهیم لیست اصلی تغییر کند. در این حالت از sorted() استفاده می‌کنیم.
new_colors = sorted(colors)

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

برعکس کردن ترتیب اعضای لیست

در بخش قبل یاد گرفتید که با استفاده از [::-1] می‌توان لیست را به صورت برعکس نمایش داد، اما خود لیست تغییری نمی‌کرد. اگر بخواهیم ترتیب اعضای خود لیست برای همیشه برعکس شود، از متد reverse() استفاده می‌کنیم.

colors.reverse()
print(colors)

تفاوت این دو روش را به خاطر بسپارید:

  • colors[::-1] یک لیست جدید با ترتیب برعکس ایجاد می‌کند و لیست اصلی تغییر نمی‌کند.
  • colors.reverse() ترتیب اعضای خود لیست اصلی را برعکس می‌کند.

کپی گرفتن از لیست

برای ساخت یک نسخه مستقل از لیست می‌توان از روش‌های زیر استفاده کرد.

colors1 = colors.copy()
colors2 = list(colors)
colors3 = colors[:]

اگر بعداً لیست اصلی تغییر کند، نسخه‌های کپی شده تغییر نخواهند کرد.

جمع‌بندی

در این درس با لیست (List) به عنوان مهم‌ترین و پرکاربردترین ساختار داده در پایتون آشنا شدید. یاد گرفتید چگونه لیست ایجاد کنید، به اعضای آن دسترسی داشته باشید، اعضای جدید اضافه کنید، آن‌ها را حذف کنید، جستجو انجام دهید، لیست را مرتب کنید و در نهایت از آن کپی بگیرید. تسلط بر لیست‌ها پایه بسیاری از برنامه‌های پایتون و حتی کتابخانه‌هایی مانند NumPy و Pandas است؛ بنابراین ارزش دارد زمان کافی برای تمرین این مبحث بگذارید.

✏️ تمرین ۱: پیدا کردن بالاترین نمره

لیست زیر را در نظر بگیرید.

scores = [18, 15, 20, 17, 19]

بدون استفاده از تابع max()، با استفاده از حلقه for بزرگ‌ترین نمره را پیدا کرده و نمایش دهید.

✏️ تمرین ۲: حذف رنگ‌های تکراری

لیست زیر را در نظر بگیرید.

colors = ["red", "blue", "red", "green", "blue", "yellow"]

یک لیست جدید بسازید که فقط رنگ‌های غیرتکراری را در خود نگه دارد.

راهنمایی: از عملگر in استفاده کنید.

✏️ تمرین ۳: شمارش نمرات قبولی

لیست زیر را در نظر بگیرید.

scores = [8, 12, 19, 10, 17, 9, 15]

با استفاده از حلقه for، تعداد نمرات بزرگ‌تر یا مساوی ۱۰ را محاسبه و چاپ کنید.

✏️ تمرین ۴: کوتاه‌ترین نام

لیست زیر را در نظر بگیرید.

students = ["Mohammad", "Ali", "Nima", "Ava", "Yekta"]

بدون استفاده از تابع min()، کوتاه‌ترین نام را پیدا کرده و نمایش دهید.

راهنمایی: از تابع len() استفاده کنید.

✏️ تمرین ۵: برعکس کردن لیست

لیست زیر را در نظر بگیرید.

numbers = [1, 2, 3, 4, 5, 6]

بدون استفاده از متد reverse() و بدون استفاده از [::-1]، یک لیست جدید بسازید که اعضای آن برعکس باشند.

✏️ تمرین ۶: پیدا کردن محل رنگ‌های خاکستری

لیست زیر را در نظر بگیرید.

colors = ["red", "gray", "blue", "gray", "green", "gray"]

با استفاده از حلقه for و تابع enumerate() شماره تمام خانه‌هایی را که مقدار آن‌ها "gray" است، نمایش دهید.

✏️ تمرین ۷: ساخت لیست اعداد زوج

بدون اینکه اعداد را مستقیماً بنویسید، با استفاده از range() و حلقه for لیستی بسازید که شامل تمام اعداد زوج بین ۰ تا ۲۰ باشد.

✏️ تمرین ۸: ساخت فهرست خرید

ابتدا یک لیست خالی به نام shopping_list ایجاد کنید.

سپس با استفاده از append() موارد زیر را به ترتیب به آن اضافه کنید:

  • شیر
  • نان
  • برنج
  • تخم‌مرغ

سپس مراحل زیر را انجام دهید:

  • مورد «نان» را از لیست حذف کنید.
  • «ماکارونی» را در جایگاه دوم لیست قرار دهید.
  • در پایان، لیست نهایی را چاپ کنید.

تاپل؛ ساختار داده دیگری در پایتون

تا اینجا با لیست (List) آشنا شدید؛ ساختاری که می‌توان اعضای آن را به‌راحتی تغییر داد. اما گاهی لازم است مجموعه‌ای از داده‌ها را ذخیره کنیم که پس از ایجاد، نباید تغییر کنند. در این مواقع از تاپل (Tuple) استفاده می‌کنیم. در درس بعد یاد می‌گیریم تاپل چیست، چه تفاوتی با لیست دارد و در چه شرایطی استفاده از آن انتخاب بهتری است.

گام بعدی : تاپل در پایتون

برای شرکت در آزمون آماده‌اید؟

با ورود به پنل کاربری می‌توانید جهت ثبت نام در آزمون‌ها و دسترسی به منابع آموزشی اقدام نمایید. کارشناسان ما در اسرع وقت با شما تماس می‌گیرند.

شروع کار با Django

شروع کار با Django در دوره آموزش جامع پایتون با مفاهیمی مانند متغیرها، شرط‌ها، حلقه‌ها، توابع، کلاس‌ها، فایل‌ها و کار

ادامه مطلب »

عملیات CRUD در SQLite

عملیات CRUD درSQLite در بخش قبل با مفهوم پایگاه داده، SQLite و نحوه اتصال پایتون به پایگاه داده آشنا شدیم.

ادامه مطلب »

توابع در پایتون

توابع در پایتون اگر هنگام برنامه‌نویسی مجبور شوید یک قطعه کد را بارها تکرار کنید، برنامه شما طولانی، شلوغ و

ادامه مطلب »

مجموعه در پایتون

مجموعه (Set) در پایتون به زبان ساده، Set مجموعه‌ای از عناصر منحصربه‌فرد (Unique) است که ترتیب مشخصی ندارد و اجازه

ادامه مطلب »

تاپل در پایتون

تاپل (Tuple) در پایتون بعد از آشنایی با لیست (List)، نوبت به یکی دیگر از ساختارهای داده در پایتون یعنی

ادامه مطلب »

لیست در پایتون

لیست (List) در پایتون پرکاربردترین ساختار داده​ تا اینجا یاد گرفتید که هر متغیر فقط یک مقدار را در خود

ادامه مطلب »

آموزش نصب پایتون

آموزش نصب پایتون و ابزارهای موردنیاز (راهنمای کامل برای ویندوز) اگر تصمیم گرفته‌اید برنامه‌نویسی را یاد بگیرید، احتمالاً نام زبان

ادامه مطلب »