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

پایتون یکی از زبانهای برنامهنویسی محبوب و قدرتمند امروزی است که به سادگی، خوانایی و کاربرد گستردهاش شناخته میشود. یکی از ساختارهای دادهی پرکاربرد در پایتون، لیست (List)ها هستند که مجموعهای از عناصر قابل تغییر و مرتبشده را نگهداری میکنند. برای کار با لیستها، پایتون ابزارهای متنوعی فراهم کرده و یکی از قدرتمندترین آنها، لیست کامپریهنشن (List Comprehension) است. لیست کامپریهنشنها این امکان را میدهند که تنها با یک خط کد، لیستهای جدیدی بر اساس لیستهای موجود یا سایر ساختارهای قابل پیمایش (iterables) بسازیم. این قابلیت نهتنها کدنویسی را سریعتر میکند، بلکه خوانایی کد را نیز بالا میبرد و باعث میشود منطق ساخت لیست در همانجا که استفاده میشود، قابلمشاهده باشد.
در این درسنامه آموزشی میخواهیم List Comprehension در پایتون را یاد بگیریم…
مقدمه: List Comprehension چیست؟
# Normal way:
numbers = []
for i in range(5):
numbers.append(i * i)
# list comprehension:
numbers = [i * i for i in range(5)]
لیست کامپریهنشن (List comprehension
) یک روش خلاصهنویسی برای ساخت لیستهاست. به جای استفاده از حلقههای for
طولانی، میتونیم فقط در یک خط کد، لیست مورد نظر رو بسازیم.
مثلا:
ساختار کلی List Comprehension
[expression for item in iterable if condition]
expression: چیزی که میخوایم به لیست نهایی اضافه کنیم.
item: هر عنصر از
iterable
(مثل لیست، رنج، رشته و …)condition: شرطی اختیاریه که فیلتر میکنه چه آیتمهایی وارد لیست بشن.
مثالهای پایه
1. ساخت لیست اعداد ۰ تا ۹:
nums = [i for i in range(10)]
print(nums) # [0, 1, 2, ..., 9]
2. مربع اعداد:
squares = [i**2 for i in range(10)]
3. اعداد زوج:
evens = [i for i in range(20) if i % 2 == 0]
4. حروف بزرگ یک رشته:
text = "hello"
upper_chars = [ch.upper() for ch in text]
کاربردهای جالب و کمی پیشرفتهتر
5. فیلتر کردن لیست:
names = ["Ali", "Reza", "Maryam", "Sara"]
short_names = [name for name in names if len(name) <= 4]
6. استفاده ترکیبی با تابع:
def square(x):
return x * x
squares = [square(i) for i in range(5)]
7. تبدیل رشته به اعداد:
data = ["1", "2", "3", "4"]
numbers = [int(x) for x in data]
ترکیب تو در تو (Nested)
8. لیست دوبعدی مسطحسازی:
matrix = [[1, 2], [3, 4], [5, 6]]
flattened = [num for row in matrix for num in row]
مثل for row in matrix: و بعد for num in row:
9. ضرب دکارتی (Cartesian Product):
colors = ["red", "blue"]
sizes = ["S", "M"]
combinations = [(c, s) for c in colors for s in sizes]
مثالهای کاربردی واقعی برای برنامهنویسها
10. گرفتن همه فایلهایی با پسوند .py
:
filenames = ["app.py", "index.html", "main.py", "style.css"]
py_files = [f for f in filenames if f.endswith(".py")]
11. پاک کردن کاراکترهای خاص:
text = "H@e#l%l^o"
cleaned = [ch for ch in text if ch.isalpha()]
12. معکوس کردن رشتهها در لیست:
words = ["hello", "python", "world"]
reversed_words = [word[::-1] for word in words]
نکات مهم
خوانایی مهمه: اگر list comprehension بیش از حد پیچیده شد، بهتره از حلقههای معمولی استفاده کنی.
فقط برای ساخت لیستها نیست: ساختار مشابه برای
set
,dict
,generator
هم هست.
سخنان پایانی
در این مقاله جامع با List Comprehension در پایتون آشنا شدیم. اگر خواستین بیشتر و عمیقتر پایتون یاد بگیرین میتونید دوره کامل پایتون رو از همین وبسایت یعنی آی کد آکادمی چک بکنید. در پایین چند تا تمرین براتون نوشتم که حالا خودتون رو به چالش بکشید و حلشون کنید:
لیستی از اعداد ۱ تا ۲۰ بساز که فقط مضرب ۳ باشند.
از لیست
[2, 3, 4]
لیستی بساز که شامل توان دوم آنها باشد.از رشته
"Python3.11"
فقط حروف الفبا رو استخراج کن.لیستی از لیستها بده و اون رو مسطح کن.
از لیستی مثل
["apple", "banana", "mango"]
، فقط مواردی رو بگیر که شامل حرفa
هستند.
دیدگاهتان را بنویسید