মূল কন্টেন্টে যান
মডিউল 5 · 4-এর পাঠ 4কোর্সে 20/36~10 min
মডিউল পাঠ (4/4)

Lambda এবং উচ্চ ক্রম ফাংশন

একটি ল্যাম্বডা একটি বেনামী ফাংশন, একটি একক লাইনে সংজ্ঞায়িত। সিনট্যাক্স:

Python
lambda parametri: espressione

def এর সমতুল্য, কিন্তু আরো সংক্ষিপ্ত এবং "থ্রোওয়ে" এর জন্য উপযুক্ত অন্যান্য ফাংশন পাস করার জন্য ফাংশন.

Python
quadrato = lambda x: x ** 2
quadrato(5)    # 25

# equivalent to:
def quadrato(x):
    return x ** 2

পার্থক্য বনাম def

দৃষ্টিভঙ্গিdeflambda
নামপ্রয়োজনীয়বেনামী
শরীরএকাধিক বিবৃতিএকটি একক অভিব্যক্তি
ফেরতস্পষ্টঅন্তর্নিহিত (অভিব্যক্তি)
ডকস্ট্রিংহ্যাঁনা

না return একটি ল্যাম্বডার ভিতরে: অভিব্যক্তির মান হল ফলাফল।

কখন ল্যাম্বডা ব্যবহার করবেন

প্রায় সবসময়: একটি key বাছাই বা ফাংশন নির্বাচনের যুক্তি হিসেবে।

Python
parole = ["banana", "kiwi", "mela", "fragola"]
sorted(parole, key=len)
# ['kiwi', 'mela', 'banana', 'fragola']

key=len বলে sorted: "দুটি উপাদান তুলনা করতে, তাদের দৈর্ঘ্য ব্যবহার করুন"। জন্য কাস্টম মানদণ্ড, ল্যাম্বডা ব্যবহার করুন:

Python
utenti = [
    {"nome": "Ada", "eta": 36},
    {"nome": "Linus", "eta": 54},
    {"nome": "Grace", "eta": 85},
]
per_eta = sorted(utenti, key=lambda u: u["eta"])
# sorted by ascending age

অন্যান্য সাধারণ ব্যবহার: min(...), max(...), filter(...), map(...)।

Python
nums = [-3, 1, -4, 1, -5, 9]
max(nums, key=lambda n: abs(n))   # -5 (maximum by absolute value)

উচ্চ ক্রম ফাংশন

একটি ফাংশন হল হায়ার-অর্ডার যদি এটি একটি ফাংশনকে আর্গুমেন্ট হিসাবে গ্রহণ করে বা একটি ফেরত দেয়। sorted, max, filter, map উচ্চ-ক্রম। ল্যাম্বদা উচ্চ-অর্ডার কল সহজ করতে অবিকল বিদ্যমান.

কখন ল্যাম্বডা ফাংশন এড়াতে হবে

Lambda ফাংশনগুলি সংক্ষিপ্ত, থ্রোওয়ে অপারেশনের জন্য দরকারী (যেমন দ্রুত বাছাই করা)। যাইহোক, যদি আপনি নিজেকে একটি ভেরিয়েবলের (যেমন double = lambda x: x * 2) একটি ল্যাম্বডা বরাদ্দ করতে দেখেন, তবে এটি সাধারণত পঠনযোগ্যতা এবং ডিবাগিং উদ্দেশ্যে একটি স্ট্যান্ডার্ড def ব্লক ব্যবহার করা পছন্দ করা হয় (যেহেতু def এর সাথে সংজ্ঞায়িত ফাংশনগুলি তাদের আসল ত্রুটি বজায় রাখে)।

চেষ্টা করে দেখুন

ব্যায়াম#python.m5.l4.e1
প্রচেষ্টা: 0লোড হচ্ছে...

তালিকা দেওয়া `শব্দ = ['কলা', 'কিউই', 'মেলা', 'ফ্রগোলা']`, দৈর্ঘ্যের ক্রমবর্ধমান দ্বারা `বে_লেংথ` এ সাজান। `দৈর্ঘ্য দ্বারা` মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

key=len (বা lambda p: len(p))।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#python.m5.l4.e2
প্রচেষ্টা: 0লোড হচ্ছে...

টিপলের তালিকা দেওয়া `পয়েন্ট = [(1, 5), (3, 2), (2, 4)]`, সেগুলিকে ঊর্ধ্ব ক্রমে SECOND উপাদান দ্বারা সাজান এবং `by_y`-এ বরাদ্দ করুন। `by_y` মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

lambda p: p[1]

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

অতিরিক্ত চ্যালেঞ্জ

ব্যায়াম#python.m5.l4.e3
প্রচেষ্টা: 0লোড হচ্ছে...

Define an anonymous `lambda` function that takes a number `x` and returns `True` if the number is even, and `False` otherwise. Assign the lambda to the variable `is_even` and test it with `is_even(8)` as the last line.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

লিখুন is_even = lambda x: x % 2 == 0 এবং তারপর কল করুন is_even(8)।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ