ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 5 · 4లో పాఠం 4కోర్సులో 20/36~10 min
మాడ్యూల్ పాఠాలు (4/4)

లాంబ్డా మరియు అధిక-ఆర్డర్ విధులు

A 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 అధిక-ఆర్డర్. లాంబ్డా అధిక-ఆర్డర్ కాల్‌లను సులభతరం చేయడానికి ఖచ్చితంగా ఉంది.

లాంబ్డా ఫంక్షన్‌లను ఎప్పుడు నివారించాలి

లాంబ్డా ఫంక్షన్‌లు చిన్న, విసిరే ఆపరేషన్‌లకు (త్వరిత క్రమబద్ధీకరణ వంటివి) ఉపయోగపడతాయి. అయితే, మీరు ఒక వేరియబుల్‌కు లాంబ్డాను కేటాయించినట్లు కనుగొంటే (ఉదా. double = lambda x: x * 2), సాధారణంగా చదవడానికి మరియు డీబగ్గింగ్ ప్రయోజనాల కోసం ప్రామాణిక def బ్లాక్‌ని ఉపయోగించడం మంచిది (__AGYTOK_INLINE_22తో నిర్వచించబడిన ఫంక్షన్‌లు వాటి రియల్‌బ్యాక్ పేర్లలో లోపం ఉన్నందున).

దీనిని ప్రయత్నించండి

వ్యాయామం#python.m5.l4.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

`పదాలు = ['అరటి', 'కివి', 'మేల', 'ఫ్రాగోలా']` జాబితాను అందించి, పొడవును ఆరోహణ చేయడం ద్వారా `పొడవు_పొడవు`కి క్రమబద్ధీకరించండి. `నిడివిని బట్టి` మూల్యాంకనం చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

కీ=లెన్ (లేదా లాంబ్డా p: len(p)).

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం సమీక్షించండి

వ్యాయామం#python.m5.l4.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

టుపుల్స్ `పాయింట్లు = [(1, 5), (3, 2), (2, 4)]` జాబితాను అందించి, వాటిని SECOND మూలకం ద్వారా ఆరోహణ క్రమంలో క్రమబద్ధీకరించండి మరియు `by_y`కి కేటాయించండి. `y_y`ని మూల్యాంకనం చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

లాంబ్డా 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 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది