మాడ్యూల్ పాఠాలు (4/4)
లాంబ్డా మరియు అధిక-ఆర్డర్ విధులు
A lambda అనేది ఒక అనామక ఫంక్షన్, ఒకే లైన్లో నిర్వచించబడింది. సింటాక్స్:
lambda parametri: espressionedefకి సమానం, కానీ మరింత సంక్షిప్తమైనది మరియు "త్రోవే"కి బాగా సరిపోతుంది
ఇతర ఫంక్షన్లకు పాస్ చేయడానికి విధులు.
quadrato = lambda x: x ** 2
quadrato(5) # 25
# equivalent to:
def quadrato(x):
return x ** 2def వర్సెస్ తేడాలు
| కోణం | 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 అధిక-ఆర్డర్. లాంబ్డా
అధిక-ఆర్డర్ కాల్లను సులభతరం చేయడానికి ఖచ్చితంగా ఉంది.
లాంబ్డా ఫంక్షన్లను ఎప్పుడు నివారించాలి
లాంబ్డా ఫంక్షన్లు చిన్న, విసిరే ఆపరేషన్లకు (త్వరిత క్రమబద్ధీకరణ వంటివి) ఉపయోగపడతాయి. అయితే, మీరు ఒక వేరియబుల్కు లాంబ్డాను కేటాయించినట్లు కనుగొంటే (ఉదా. double = lambda x: x * 2), సాధారణంగా చదవడానికి మరియు డీబగ్గింగ్ ప్రయోజనాల కోసం ప్రామాణిక def బ్లాక్ని ఉపయోగించడం మంచిది (__AGYTOK_INLINE_22తో నిర్వచించబడిన ఫంక్షన్లు వాటి రియల్బ్యాక్ పేర్లలో లోపం ఉన్నందున).
దీనిని ప్రయత్నించండి
`పదాలు = ['అరటి', 'కివి', 'మేల', 'ఫ్రాగోలా']` జాబితాను అందించి, పొడవును ఆరోహణ చేయడం ద్వారా `పొడవు_పొడవు`కి క్రమబద్ధీకరించండి. `నిడివిని బట్టి` మూల్యాంకనం చేయండి.
సూచనను చూపించు
కీ=లెన్ (లేదా లాంబ్డా p: len(p)).
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం సమీక్షించండి
టుపుల్స్ `పాయింట్లు = [(1, 5), (3, 2), (2, 4)]` జాబితాను అందించి, వాటిని SECOND మూలకం ద్వారా ఆరోహణ క్రమంలో క్రమబద్ధీకరించండి మరియు `by_y`కి కేటాయించండి. `y_y`ని మూల్యాంకనం చేయండి.
సూచనను చూపించు
లాంబ్డా 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 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది