In Python, lambda è una parola chiave utilizzata per definire funzioni anonime (funzioni senza nome) ed è per questo che sono conosciuti come funzioni lambda.
Fondamentalmente esso è usato per definire funzioni anonime che può/non può prendere argomento (s) e restituisce il valore dei dati /espressione. Vediamo un esempio .
>>> # Defining a lambda function that takes 2 parameters(as integer) and returns their sum
...
>>> lambda num1, num2: num1 + num2
<function <lambda> at 0x1004b5de8>
>>>
>>> # Let's store the returned value in variable & call it(1st way to call)
...
>>> addition = lambda num1, num2: num1 + num2
>>> addition(62, 5)
67
>>> addition(1700, 29)
1729
>>>
>>> # Let's call it in other way(2nd way to call, one line call)
...
>>> (lambda num1, num2: num1 + num2)(120, 1)
121
>>> (lambda num1, num2: num1 + num2)(-68, 2)
-66
>>> (lambda num1, num2: num1 + num2)(-68, 2**3)
-60
>>>
Ora darmi una risposta del vostro secondo domanda. Anche la risposta 1st è ottima. Questo è il mio modo di spiegare con un altro esempio.
Supponiamo di avere un elenco di elementi (interi e stringhe con contenuti numerici) come segue,
nums = ["2", 1, 3, 4, "5", "8", "-1", "-10"]
e voglio ordinare utilizzando ordinato function(), consente di vedere ciò che accade.
>>> nums = ["2", 1, 3, 4, "5", "8", "-1", "-10"]
>>> sorted(nums)
[1, 3, 4, '-1', '-10', '2', '5', '8']
>>>
E non mi ha dato quello che mi aspettavo come ho voluto come qui di seguito,
['-10', '-1', 1, '2', 3, 4, '5', '8']
Significa abbiamo bisogno di qualche strategia (in modo che allineati potrebbero trattare i nostri oggetti stringa come un intimo) per raggiungere questo obiettivo. Questo è il motivo per cui viene utilizzato l'argomento chiave chiave. Si prega di guardare quello sotto.
>>> nums = ["2", 1, 3, 4, "5", "8", "-1", "-10"]
>>> sorted(nums, key=int)
['-10', '-1', 1, '2', 3, 4, '5', '8']
>>>
Lets funzione di uso lambda come un valore di chiave
>>> names = ["Rishikesh", "aman", "Ajay", "Hemkesh", "sandeep", "Darshan", "Virendra", "Shwetabh"]
>>> names2 = sorted(names)
>>> names2
['Ajay', 'Darshan', 'Hemkesh', 'Rishikesh', 'Shwetabh', 'Virendra', 'aman', 'sandeep']
>>> # But I don't want this o/p(here our intention is to treat 'a' same as 'A')
...
>>> names3 = sorted(names, key=lambda name:name.lower())
>>> names3
['Ajay', 'aman', 'Darshan', 'Hemkesh', 'Rishikesh', 'sandeep', 'Shwetabh', 'Virendra']
>>>
È possibile definire una propria funzione (callable) e fornire come valore della chiave .
Cari programmatori, ho scritto il codice qui sotto per voi, solo cercare di capire e commento tua spiegazione.Sarei felice di vedere la tua spiegazione (è semplice).
>>> def validator(item):
... try:
... return int(item)
... except:
... return 0
...
>>> sorted(['gurmit', "0", 5, 2, 1, "front", -2, "great"], key=validator)
[-2, 'gurmit', '0', 'front', 'great', 1, 2, 5]
>>>
ho speranza sarebbe utile.
'key' in questo caso è un argomento di parole chiave e non ha nulla a che fare con' lambda'. – l4mpi
Vedi questo: http://stackoverflow.com/questions/8966538/syntax-behind-sortedkey-lambda – sachinjain024