মূল content-এ যাও

Python for AI/Functions, Modules ও Packages/Lesson 17

Lambda, map ও filter

Function-ও একটা value — variable-এ রাখা, অন্য function-এ পাঠানো যায়। lambda, map, filter, আর কখন comprehension বেশি ভালো।

সময়
20 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

Python-এ function-ও একটা value — ঠিক সংখ্যা বা string-এর মতো। Variable-এ রাখা যায়, list-এ রাখা যায়, অন্য function-এ argument হিসেবে পাঠানো যায়:

main.py

খেয়াল করো: speak = shout লিখেছি, shout() না — function-টাকেই রাখছি, ডাকছি না।

আর lambda হলো নাম ছাড়া, এক লাইনের ছোট function।

কেন দরকার?

অনেক function আরেকটা function চায় — "কীভাবে কাজ করবে" সেটা বলে দেওয়ার জন্য:

  • sorted(data, key=...) — কোন নিয়মে সাজাবে
  • Pandas-এ df["price"].apply(...) — প্রতিটা মানে কী করবে
  • PyTorch-এ data transform, scikit-learn-এ custom scoring

প্রতিবার আলাদা def লেখা ঝামেলার। Lambda সেখানে কাজে লাগে।

lambda

main.py

কাঠামো:

lambda  parameters  :  expression
        (input)        (যেটার মান return হবে)

Lambda-তে return লিখতে হয় না — expression-এর মানই return হয়। কিন্তু শুধু একটা expression — loop বা একাধিক লাইন চলে না।

সাধারণত lambda variable-এ রাখা হয় না (তখন def-ই ভালো)। এটা সরাসরি অন্য function-এ পাঠানোর জন্য।

main.py

map(): প্রতিটায় একই কাজ

main.py

map সাথে সাথে list দেয় না — একটা lazy object দেয়, যেটা দরকার হলে একটা একটা করে মান বানায়। তাই list() দিয়ে ঘিরতে হয়।

filter(): শর্ত মানলে রাখো

main.py

দ্বিতীয় উদাহরণে str.strip খালি/space-ওয়ালা string-এর জন্য "" দেয় — যেটা falsy — তাই বাদ যায়।

map/filter বনাম comprehension

একই কাজ দুইভাবে:

main.py

দ্বিতীয়টা পড়তে অনেক সহজ। Python community-র সাধারণ পরামর্শ: lambda লাগলে comprehension-ই ভালো। কিন্তু function আগে থেকেই থাকলে map বেশ পরিষ্কার:

main.py

দুটোই ঠিক। Code পড়ে যেটা বেশি স্বাভাবিক লাগে, সেটা লেখো।

Exercise

Exercise

map দিয়ে রূপান্তর

+20 XP

celsius list-এর প্রতিটা তাপমাত্রাকে Fahrenheit-এ রূপান্তর করে fahrenheit list বানাও — `map()` আর `lambda` দিয়ে।

সূত্র: F = C × 9/5 + 32

solution.py

Quiz

  1. Q1square = lambda x: x * x — square(4) কী?
  2. Q2list(filter(lambda n: n % 2 == 0, [1, 2, 3, 4]))-এর মান কী?
  3. Q3Lambda-র ভেতরে কী লেখা যায় না?
0/3 answered

Challenge

Challenge

Function pipeline

+50 XP

pipeline(value, *steps) function লেখো। steps হলো কয়েকটা function — value-এর ওপর একটার পর একটা চালাবে, আগেরটার output পরেরটার input। শেষ ফলাফল return করবে।

কোনো step না দিলে value-টাই ফেরত দেবে। যেমন:

pipeline(" Hello AI ", str.strip, str.lower) → "hello ai"

solution.py

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

তুমি challenge-এ যা বানালে, সেটাই ML-এর preprocessing pipeline-এর মূল ধারণা। text-কে model-এ দেওয়ার আগে কয়েকটা ধাপ:

main.py

scikit-learn-এর Pipeline, torchvision-এর transforms.Compose — দুটোই ঠিক এই ধারণার ওপর তৈরি: ধাপগুলোর একটা list, একটার পর একটা চালানো।

Interview প্রশ্ন

  • Beginner: Lambda আর সাধারণ function-এর পার্থক্য কী?
  • Intermediate: "Function is a first-class object" — এর মানে কী? উদাহরণ দাও।
  • Advanced: Loop-এর ভেতরে lambda বানালে [lambda: i for i in range(3)] — প্রতিটা কেন 2 return করে? (Late binding: lambda i-এর মান ডাকার সময় দেখে, বানানোর সময় না।)

এরপর কী?

Function-এর ভেতরে বানানো variable বাইরে থেকে দেখা যায় না কেন? আর বাইরের variable ভেতর থেকে বদলানো যায় কি? পরের lesson: Scope।