মূল content-এ যাও

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 বানানো।

main.py

চার লাইন। List comprehension দিয়ে একই কাজ এক লাইনে:

main.py

পড়ো এভাবে: "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

main.py

Filter

শেষে if দিলে শুধু শর্ত মানা item থাকে:

main.py

Transform + Filter একসাথে

main.py

if-else দিয়ে মান বদলানো

প্রতিটা item রাখতে চাও কিন্তু শর্ত অনুযায়ী আলাদা মান — তখন if-else যায় সামনে:

main.py

মনে রাখার উপায়: শুধু if (filter) → শেষে। if ... else (মান বাছাই) → সামনে।

Dict ও Set Comprehension

একই কৌশল dictionary আর set-এও:

main.py

কখন ব্যবহার করবে না?

Comprehension এক লাইনে পড়া যায় এমন কাজের জন্য। Logic জটিল হলে সাধারণ loop-ই ভালো:

main.py

নিয়ম: একবার পড়ে বুঝতে না পারলে, loop লেখো। Clever code-এর চেয়ে পরিষ্কার code বেশি মূল্যবান।

Exercise

Exercise

Score normalize করো

+20 XP

scores list-এর প্রতিটা মানকে 100 দিয়ে ভাগ করে normalized list বানাও — list comprehension দিয়ে, এক লাইনে।

(ML-এ input-কে 0 থেকে 1-এর মধ্যে আনা খুব common — একে বলে normalization।)

solution.py

Quiz

  1. Q1[x * 2 for x in range(4)]-এর মান কী?
  2. Q2[n for n in [5, -2, 8, -1] if n > 0]-এর মান কী?
  3. Q3{x % 3 for x in range(10)}-এর মান কী?
0/3 answered

Challenge

Challenge

Stop word বাদ দিয়ে শব্দের দৈর্ঘ্য

+50 XP

sentence-এর শব্দগুলো থেকে একটা dictionary বানাও lengths নামে: key হবে শব্দ (ছোট হাতের অক্ষরে), value হবে শব্দের দৈর্ঘ্য।

কিন্তু stop_words-এ থাকা শব্দগুলো বাদ যাবে। Dict comprehension ব্যবহার করো।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

Text preprocessing — model-এ দেওয়ার আগে review পরিষ্কার করা:

main.py

আর label-কে সংখ্যায় রূপান্তর (model শুধু সংখ্যা বোঝে):

main.py

এই 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।