List Comprehension در پایتون چیست؟

List Comprehension یکی از قابلیت‌های کاربردی و جذاب زبان پایتون است که به ما اجازه می‌دهد با استفاده از یک دستور کوتاه، لیست‌های جدید ایجاد کنیم.

اگر با لیست‌ها و حلقه for در پایتون آشنا باشید، یادگیری List Comprehension برایتان بسیار ساده خواهد بود.

نکته: List Comprehension بیشتر برای زمانی مناسب است که بخواهیم از روی یک مجموعه، یک لیست جدید ایجاد کنیم.

List Comprehension چیست؟

در حالت معمول برای ساختن یک لیست جدید ممکن است از حلقه for استفاده کنیم. برای مثال می‌خواهیم مربع اعداد 1 تا 5 را داخل یک لیست قرار دهیم.

روش معمول با حلقه for

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

squares = []

for number in numbers:
    squares.append(number ** 2)

print(squares)

خروجی:

[1, 4, 9, 16, 25]

همان مثال با List Comprehension

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

squares = [number ** 2 for number in numbers]

print(squares)

خروجی:

[1, 4, 9, 16, 25]

همان کاری که با چند خط کد انجام دادیم، با List Comprehension در یک خط انجام شد.

ساختار List Comprehension

ساختار ساده آن به شکل زیر است:

[expression for item in iterable]

اجزای این ساختار:

  • expression: مقداری که قرار است وارد لیست شود.
  • item: هر عنصر از مجموعه.
  • iterable: مجموعه‌ای که روی آن پیمایش انجام می‌شود.

مثال ساده

فرض کنید می‌خواهیم اعداد 1 تا 10 را داخل یک لیست قرار دهیم:

numbers = [x for x in range(1, 11)]

print(numbers)

خروجی:

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

استفاده از شرط در List Comprehension

یکی از قابلیت‌های مهم List Comprehension استفاده از شرط if است.

برای مثال می‌خواهیم فقط اعداد زوج را از بین اعداد 1 تا 10 انتخاب کنیم:

even_numbers = [x for x in range(1, 11) if x % 2 == 0]

print(even_numbers)

خروجی:

[2, 4, 6, 8, 10]

مثال: پیدا کردن اعداد بزرگ‌تر از 5

numbers = [2, 5, 7, 9, 3, 10]

result = [x for x in numbers if x > 5]

print(result)

خروجی:

[7, 9, 10]

تغییر مقدار عناصر با List Comprehension

می‌توانیم هنگام ساخت لیست جدید، مقدار عناصر را نیز تغییر دهیم.

برای مثال، دو برابر کردن اعداد:

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

result = [x * 2 for x in numbers]

print(result)

خروجی:

[2, 4, 6, 8, 10]

کار با رشته‌ها

List Comprehension فقط برای اعداد نیست و می‌توان از آن برای کار با رشته‌ها نیز استفاده کرد.

names = ["Ali", "Sara", "Reza"]

result = [name.upper() for name in names]

print(result)

خروجی:

['ALI', 'SARA', 'REZA']

List Comprehension تو در تو

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

برای مثال:

result = [x * y for x in [1, 2, 3] for y in [10, 20]]

print(result)

خروجی:

[10, 20, 20, 40, 30, 60]
توجه: List Comprehension تو در تو ممکن است کد را سخت‌تر کند. اگر کد بیش از حد پیچیده شد، استفاده از حلقه‌های معمولی می‌تواند خوانایی برنامه را بهتر کند.

مزایای List Comprehension

  • کاهش تعداد خطوط کد
  • خوانایی مناسب در مثال‌های ساده
  • روش سریع و کاربردی برای ساخت لیست
  • امکان استفاده از شرط
  • مناسب برای تبدیل و فیلتر کردن داده‌ها

چه زمانی از List Comprehension استفاده نکنیم؟

کوتاه بودن کد همیشه به معنی بهتر بودن آن نیست. اگر List Comprehension بسیار پیچیده شود، ممکن است خواندن و درک آن سخت شود.

بنابراین بهتر است از آن برای عملیات ساده و قابل فهم استفاده کنیم.

تمرین List Comprehension

تمرین 1:

با استفاده از List Comprehension لیستی از مربع اعداد 1 تا 10 ایجاد کنید.

تمرین 2:

از لیست زیر فقط اعداد زوج را انتخاب کنید:

numbers = [1, 4, 7, 10, 13, 16, 20]

تمرین 3:

با استفاده از List Comprehension تمام کلمات یک لیست را به حروف بزرگ تبدیل کنید.

جمع‌بندی

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

اگر تازه با پایتون شروع کرده‌اید، ابتدا حلقه for را به خوبی یاد بگیرید و سپس از List Comprehension استفاده کنید.

مطالب مرتبط

سؤالات متداول

List Comprehension در پایتون چیست؟

List Comprehension روشی کوتاه و خوانا برای ایجاد لیست‌های جدید در پایتون است.

آیا List Comprehension همان حلقه for است؟

از نظر کاربرد می‌توان در بسیاری از موارد از List Comprehension برای کاری مشابه حلقه for استفاده کرد، اما ساختار و کاربرد آن متفاوت است.

آیا List Comprehension فقط برای List استفاده می‌شود؟

List Comprehension مخصوص ایجاد لیست است، اما پایتون ساختارهای مشابهی مانند Set Comprehension و Dictionary Comprehension نیز دارد.