முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 5 · பாடம் 4 இன் 4பாடத்திட்டத்தில் 20/36~10 min
தொகுதி பாடங்கள் (4/4)

லாம்ப்டா மற்றும் உயர்-வரிசை செயல்பாடுகள்

ஒரு லாம்ப்டா என்பது ஒரு அநாமதேய செயல்பாடு, ஒற்றை வரியில் வரையறுக்கப்படுகிறது. தொடரியல்:

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 இல் **AGYTOK_INLINE_22 பிழையுடன் வரையறுக்கப்பட்ட செயல்பாடுகள் அவற்றின் உண்மையான பெயர்களில் இருக்கும் என்பதால்).

முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#python.m5.l4.e1
முயற்சிகள்: 0ஏற்றுகிறது…

`வார்த்தைகள் = ['வாழைப்பழம்', 'கிவி', 'மேலா', 'ஃப்ராகோலா']` என்ற பட்டியலைக் கொடுத்தால், 'படி_நீளம்' என ஏறுவரிசையில் வரிசைப்படுத்தவும். `நீளத்தால்` மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

கீ=லென் (அல்லது லாம்ப்டா ப: லென்(பி)).

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#python.m5.l4.e2
முயற்சிகள்: 0ஏற்றுகிறது…

`புள்ளிகள் = [(1, 5), (3, 2), (2, 4)]` டூப்பிள்களின் பட்டியலைக் கொடுத்தால், அவற்றை SECOND உறுப்பு மூலம் ஏறுவரிசையில் வரிசைப்படுத்தி `by_y`க்கு ஒதுக்கவும். `by_y` என்பதை மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

லாம்ப்டா ப: ப[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 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்