মডিউল পাঠ (4/4)
Lambda এবং উচ্চ ক্রম ফাংশন
একটি ল্যাম্বডা একটি বেনামী ফাংশন, একটি একক লাইনে সংজ্ঞায়িত। সিনট্যাক্স:
lambda parametri: espressionedef এর সমতুল্য, কিন্তু আরো সংক্ষিপ্ত এবং "থ্রোওয়ে" এর জন্য উপযুক্ত
অন্যান্য ফাংশন পাস করার জন্য ফাংশন.
quadrato = lambda x: x ** 2
quadrato(5) # 25
# equivalent to:
def quadrato(x):
return x ** 2পার্থক্য বনাম def
| দৃষ্টিভঙ্গি | def | lambda |
|---|---|---|
| নাম | প্রয়োজনীয় | বেনামী |
| শরীর | একাধিক বিবৃতি | একটি একক অভিব্যক্তি |
| ফেরত | স্পষ্ট | অন্তর্নিহিত (অভিব্যক্তি) |
| ডকস্ট্রিং | হ্যাঁ | না |
না return একটি ল্যাম্বডার ভিতরে: অভিব্যক্তির মান হল ফলাফল।
কখন ল্যাম্বডা ব্যবহার করবেন
প্রায় সবসময়: একটি key বাছাই বা ফাংশন নির্বাচনের যুক্তি হিসেবে।
parole = ["banana", "kiwi", "mela", "fragola"]
sorted(parole, key=len)
# ['kiwi', 'mela', 'banana', 'fragola']key=len বলে sorted: "দুটি উপাদান তুলনা করতে, তাদের দৈর্ঘ্য ব্যবহার করুন"। জন্য
কাস্টম মানদণ্ড, ল্যাম্বডা ব্যবহার করুন:
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(...)।
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 এর সাথে সংজ্ঞায়িত ফাংশনগুলি তাদের আসল ত্রুটি বজায় রাখে)।
চেষ্টা করে দেখুন
তালিকা দেওয়া `শব্দ = ['কলা', 'কিউই', 'মেলা', 'ফ্রগোলা']`, দৈর্ঘ্যের ক্রমবর্ধমান দ্বারা `বে_লেংথ` এ সাজান। `দৈর্ঘ্য দ্বারা` মূল্যায়ন করুন।
ইঙ্গিত দেখান
key=len (বা lambda p: len(p))।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ব্যায়াম পর্যালোচনা করুন
টিপলের তালিকা দেওয়া `পয়েন্ট = [(1, 5), (3, 2), (2, 4)]`, সেগুলিকে ঊর্ধ্ব ক্রমে SECOND উপাদান দ্বারা সাজান এবং `by_y`-এ বরাদ্দ করুন। `by_y` মূল্যায়ন করুন।
ইঙ্গিত দেখান
lambda p: p[1]
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
অতিরিক্ত চ্যালেঞ্জ
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 প্রচেষ্টার পরে উপলব্ধ