Python for AI/Data Structures আরও গভীরে/Lesson 12
List Comprehension
Loop আর append-এর চার লাইন এক লাইনে — transform, filter, আর dict/set comprehension। Pythonic code-এর সবচেয়ে চেনা চিহ্ন।
- সময়
- 20 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
খুব common একটা pattern: একটা list-এর প্রতিটা item নিয়ে কিছু একটা করে নতুন list বানানো।
চার লাইন। List comprehension দিয়ে একই কাজ এক লাইনে:
পড়ো এভাবে: "prices-এর প্রতিটা p-এর জন্য, p × 1.15 — এগুলো দিয়ে একটা list।"
কেন দরকার?
- ছোট আর পরিষ্কার — উদ্দেশ্যটা এক নজরে বোঝা যায়।
- একটু দ্রুতও — loop + append-এর চেয়ে।
- সবখানে দেখবে — Kaggle notebook, PyTorch code, open-source library — Python developer-রা প্রতিদিন এটা লেখে। না চিনলে অন্যের code পড়তে কষ্ট হবে।
কাঠামো
[ expression for item in iterable if condition ]
^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^
কী বানাবো কোথা থেকে (ঐচ্ছিক) কোনগুলো রাখবো
Transform
Filter
শেষে if দিলে শুধু শর্ত মানা item থাকে:
Transform + Filter একসাথে
if-else দিয়ে মান বদলানো
প্রতিটা item রাখতে চাও কিন্তু শর্ত অনুযায়ী আলাদা মান — তখন if-else যায় সামনে:
মনে রাখার উপায়: শুধু
if(filter) → শেষে।if ... else(মান বাছাই) → সামনে।
Dict ও Set Comprehension
একই কৌশল dictionary আর set-এও:
কখন ব্যবহার করবে না?
Comprehension এক লাইনে পড়া যায় এমন কাজের জন্য। Logic জটিল হলে সাধারণ loop-ই ভালো:
নিয়ম: একবার পড়ে বুঝতে না পারলে, loop লেখো। Clever code-এর চেয়ে পরিষ্কার code বেশি মূল্যবান।
Exercise
Exercise
Score normalize করো
scores list-এর প্রতিটা মানকে 100 দিয়ে ভাগ করে normalized list বানাও — list comprehension দিয়ে, এক লাইনে।
(ML-এ input-কে 0 থেকে 1-এর মধ্যে আনা খুব common — একে বলে normalization।)
Quiz
Challenge
Challenge
Stop word বাদ দিয়ে শব্দের দৈর্ঘ্য
sentence-এর শব্দগুলো থেকে একটা dictionary বানাও lengths নামে: key হবে শব্দ (ছোট হাতের অক্ষরে), value হবে শব্দের দৈর্ঘ্য।
কিন্তু stop_words-এ থাকা শব্দগুলো বাদ যাবে। Dict comprehension ব্যবহার করো।
বাস্তবে কোথায় ব্যবহার হয়?
Text preprocessing — model-এ দেওয়ার আগে review পরিষ্কার করা:
আর label-কে সংখ্যায় রূপান্তর (model শুধু সংখ্যা বোঝে):
এই label_to_id dictionary-টা প্রায় প্রতিটা classification project-এ বানাতে হয়।
Interview প্রশ্ন
- Beginner: List comprehension-কে সাধারণ for loop-এ লিখে দেখাও।
- Intermediate:
[x for x in data]আর(x for x in data)-এর পার্থক্য কী? (দ্বিতীয়টা generator — সব মান একসাথে memory-তে রাখে না।) - Advanced: ১০ GB-র একটা file লাইন ধরে process করতে হলে list comprehension কেন সমস্যা, আর কী ব্যবহার করবে?
এরপর কী?
Real-world data — API response, JSON file, config — সাধারণত list-এর ভেতরে dictionary, তার ভেতরে আবার list। পরের lesson: Nested Data।