লিস্ট কম্প্রিহেনশন কী?
লিস্ট কম্প্রিহেনশন (List Comprehension) হলো একটি এক্সিস্টিং লিস্ট (বা যেকোনো ইটেরেবল) থেকে নতুন লিস্ট তৈরি করার সংক্ষিপ্ত, পঠনীয় এবং পাইথনিক পদ্ধতি। এটি for লুপ এবং if কন্ডিশন এক লাইনে একসাথে প্রকাশ করতে দেয়।
সিনট্যাক্স
[expression for item in iterable if condition]
- expression: নতুন লিস্টে থাকবে কী (ভেরিয়েবল, ক্যালকুলেশন, ফাংশন কল)۔
- item: লুপ ভেরিয়েবল।
- iterable: সোর্স ডেটা (লিস্ট, টাপল, স্ট্রিং, রেঞ্জ ইত্যাদি)।
- if condition (ঐচ্ছিক): ফিল্টারিংয়ের জন্য।
ব্যবহারিক উদাহরণসমূহ
১. বেসিক: প্রতিটি এলিমেন্টকে ২ দিয়ে গুন করা
numbers = [1, 2, 3, 4, 5] doubled = [n * 2 for n in numbers] print(doubled) # [2, 4, 6, 8, 10]
২. ফিল্টারিং: শুধু ইভেন নম্বর বেছে নেওয়া
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] evens = [n for n in numbers if n % 2 == 0] print(evens) # [2, 4, 6, 8, 10]
৩. স্ট্রিং ফিল্টারিং: 'Chicken' শব্দযুক্ত পিজা বেছে নেওয়া
pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special', 'Spinach and Brie', 'BBQ Chicken'] chicken_pizzas = [p for p in pizzas if "Chicken" in p] print(chicken_pizzas) # ['Chicken', 'Chicken and Bacon', 'BBQ Chicken']
৪. if-else এক্সপ্রেশন (টার্নারি) ব্যবহার
pizzas = ['Chicken', 'Margherita', 'Chicken and Bacon', 'Vegan Special'] tags = ["Meat" if "Chicken" in p else "Vegetarian" for p in pizzas] print(tags) # ['Meat', 'Vegetarian', 'Meat', 'Vegetarian']
নোট: if-else এক্সপ্রেশন থাকলে for-এর আগে লিখতে হয়। শুধু if থাকলে for-এর পরে।
৫. নেস্টেড লিস্ট ফ্ল্যাটেন করা
matrix = [[1, 2], [3, 4], [5, 6]] flat = [num for row in matrix for num in row] print(flat) # [1, 2, 3, 4, 5, 6]
লিস্ট কম্প্রিহেনশন বনাম for লুপ
| দিক | List Comprehension | for Loop |
|---|---|---|
| লাইনের সংখ্যা | ১ | ৩-৪ |
| পঠনীয়তা | উচ্চ (সিম্পল কেসে) | জটিল লজিকের জন্য ভালো |
| পারফরম্যান্স | কিছুটা দ্রুত | স্ট্যান্ডার্ড |
| ডিবাগিং | কঠিন | সহজ |
কখন ব্যবহার করবেন না?
- জটিল লজিক, মাল্টিপল লাইন কোড, বা এক্সেপশন হ্যান্ডলিং দরকার হলে।
- যখন কোড অন্যদের পড়তে হবে এবং কম্প্রিহেনশন বুঝতে কঠিন হয়।
নিষ্কর্ষ
লিস্ট কম্প্রিহেনশন পাইথনের সবচেয়ে শক্তিশালী ও এক্সপ্রেসিভ ফিচারlardan একটি। সিম্পল ট্রান্সফরমেশন ও ফিল্টারিং-এ এটি কোডকে ক্লিন, ফাস্ট এবং পাইথনিক করে। জটিল কেসে সাধারণ for লুপই বেছে নিন।