آشنایی با لیست کومپریهنشن در پایتون
لیست کومپریهنشن (List Comprehension) یکی از ویژگیهای بسیار مفید و قدرتمند در زبان برنامهنویسی پایتون است. این ویژگی به شما اجازه میدهد تا لیستهای جدید را به صورت خلاقانه و با خطوط کد کمتر ایجاد کنید. فرض کنید شما میخواهید لیستی از اعداد از ۱ تا ۱۰ ایجاد کنید و سپس این اعداد را به توان ۲ برسانید. بدون لیست کومپریهنشن، شما باید از حلقههای for استفاده کنید، اما با لیست کومپریهنشن، میتوانید این کار را در یک خط کد انجام دهید.
ساختار لیست کومپریهنشن
ساختار کلی لیست کومپریهنشن به این شکل است:
new_list = [expression for variable in iterable if condition]
– expression: عملی است که میخواهید روی هر عنصر انجام دهید.
– variable: متغیری است که نماینده عناصر در iterable است.
– iterable: منبعی است که عناصر از آن میآیند (مثلاً لیست، تاپل، ست، دیکشنری).
– condition (اختیاری): شرطی است که برای فیلتر کردن عناصر میتوانید تعیین کنید.
مثالهای ساده
- مثال ۱: ایجاد لیستی از اعداد ۱ تا ۱۰ و چاپ آنها
numbers = [x for x in range(1, 11)]
print(numbers)
خروجی: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- مثال ۲: مربع کردن اعداد
numbers = [x**2 for x in range(1, 11)]
print(numbers)
خروجی: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
استفاده از شرط در لیست کومپریهنشن
شما میتوانید با افزودن شرط، عناصر را فیلتر کنید.
- مثال ۳: ایجاد لیستی از اعداد زوج از ۱ تا ۱۰
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers)
خروجی: [2, 4, 6, 8, 10]
کاربردهای پیشرفتهتر
لیست کومپریهنشن میتواند با انواع دادهها و شرایط مختلف استفاده شود.
- مثال ۴: کار با رشتهها
فرض کنید میخواهید لیستی از نامهای دوستانتان را به حروف بزرگ تبدیل کنید.
names = ["ali", "zahra", "amir", "sara"]
uppercase_names = [name.upper() for name in names]
print(uppercase_names)
خروجی: [‘ALI’, ‘ZAHRA’, ‘AMIR’, ‘SARA’]
مثالهای مرتبط با زندگی روزمره
- مثال ۵: فهرست نمرات دانشآموزان
فرض کنید شما لیستی از نمرات دانشآموزان در یک کلاس دارید و میخواهید نمرات بالاتر از ۸۰ را پیدا کنید.
scores = [90, 75, 87, 92, 78, 85, 91]
high_scores = [score for score in scores if score > 80]
print(high_scores)
خروجی: [90, 87, 92, 85, 91]
- مثال ۶: قیمتهای تخفیفدار
فرض کنید شما قیمتهای تعدادی از موترها را دارید و میخواهید قیمتهای کمتر از ۲۰۰۰۰۰ را پیدا کنید.
prices = [150000, 250000, 180000, 300000, 120000]
discounted_prices = [price for price in prices if price < 200000]
print(discounted_prices)
خروجی: [150000, 180000, 120000]
مثالهای چندبعدی
شما میتوانید لیست کومپریهنشن را برای دادههای چندبعدی مثل لیستهای تو در تو نیز استفاده کنید.
- مثال ۷: فهرست نمرات به تفکیک دانشآموز
فرض کنید شما لیستی از دانشآموزان و نمرات آنها در امتحانات مختلف دارید.
students = [
{"name": "علی", "scores": [90, 75, 87]},
{"name": "زهرا", "scores": [92, 78, 85]},
{"name": "امیر", "scores": [91, 95, 89]}
]
all_scores = [score for student in students for score in student["scores"]]
print(all_scores)
خروجی: [90, 75, 87, 92, 78, 85, 91, 95, 89]
مزایای لیست کومپریهنشن
۱. کدهای کوتاهتر و خواناتر: لیست کومپریهنشن به شما کمک میکند تا کدهایتان را کوتاهتر و درکپذیرتر بنویسید.
۲. بهبود کارایی: از آنجا که لیست کومپریهنشنها به صورت داخلی و بهینه کار میکنند، میتوانند سریعتر از حلقههای for معمولی باشند.
۳. کاهش حافظه مصرفی: به دلیل استفاده نکردن از متغیرهای میانی، لیست کومپریهنشنها حافظه کمتری مصرف میکنند.
همیشه به یاد داشته باشید که کدهایتان تا حد ممکن ساده و قابل فهم باشند. لیست کومپریهنشنها به شما کمک میکنند تا کدهای خلاقانه و کارآمد بنویسید.
تمرینها
- ۱. لیستی از اعداد زوج از ۱ تا ۲۰ ایجاد کنید.
- ۲. قیمتهای کالاها را به صورت لیست دریافت کنید و لیست قیمتهای تخفیفدار (کمتر از ۱۰۰۰۰۰) را ایجاد کنید.
- ۳. نامهای دانشآموزان را به حروف بزرگ تبدیل کنید.
راهحل تمرینها
- ۱. اعداد زوج از ۱ تا ۲۰
even_numbers = [x for x in range(1, 21) if x % 2 == 0]
print(even_numbers)
prices = [90000, 110000, 80000, 120000, 70000]
discounted_prices = [price for price in prices if price < 100000]
print(discounted_prices)
names = ["ahmad", "maryam", "reza", "fatima"]
uppercase_names = [name.upper() for name in names]
print(uppercase_names)
نتیجهگیری
با لیست کومپریهنشنها، شما میتوانید کدهایتان را سادهتر، خواناتر و کارآمدتر کنید. تمرینهای مختلف و مثالهای کاربردی به شما کمک میکند تا این مفهوم را بهتر درک کنید و در پروژههای آیندهتان به کار بگیرید.