In Python 2.6 wil ik het volgende doen:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
Dit is duidelijk niet de syntaxis. Is het mogelijk om een if
uit te voeren in lambda
en zo ja, hoe dit te doen?
Antwoord 1, autoriteit 100%
De syntaxis die u zoekt:
lambda x: True if x % 2 == 0 else False
Maar je kunt print
of raise
niet gebruiken in een lambda.
Antwoord 2, autoriteit 6%
waarom definieer je niet gewoon een functie?
def f(x):
if x == 2:
print(x)
else:
raise ValueError
er is in dit geval echt geen reden om lambda te gebruiken.
Antwoord 3, autoriteit 4%
Waarschijnlijk de slechtste python-regel die ik tot nu toe heb geschreven:
f = lambda x: sys.stdout.write(["2\n",][2*(x==2)-2])
Als x == 2 u afdrukt,
als x != 2 verhoogt u.
Antwoord 4, autoriteit 3%
Je kunt gemakkelijk een uitzondering maken in een lambda, als je dat echt wilt.
def Raise(exception):
raise exception
x = lambda y: 1 if y < 2 else Raise(ValueError("invalid value"))
Is dit een goed idee? Mijn instinct in het algemeen is om de foutrapportage uit lambda’s te laten; laat het de waarde Geen hebben en verhoog de fout in de beller. Ik denk echter niet dat dit inherent slecht is – ik vind de syntaxis “y if x else z” zelf slechter – zorg er gewoon voor dat je niet te veel in een lambdalichaam probeert te proppen.
Antwoord 5, autoriteit 2%
Lambda’s in Python zijn vrij beperkend met betrekking tot wat je mag gebruiken. U kunt met name geen trefwoorden (behalve operators zoals and
, not
, or
, enz.) in hun hoofdtekst hebben.
Dus je kunt geen lambda als voorbeeld gebruiken (omdat je geen raise
kunt gebruiken), maar als je bereid bent toe te geven, kun je het volgende gebruiken:
f = lambda x: x == 2 and x or None
Antwoord 6, autoriteit 2%
merk op dat u verschillende else…if-statements kunt gebruiken in uw lambda-definitie:
f = lambda x: 1 if x>0 else 0 if x ==0 else -1
Antwoord 7
Als u nog steeds wilt afdrukken, kunt u de toekomstige module importeren
from __future__ import print_function
f = lambda x: print(x) if x%2 == 0 else False
Antwoord 8
U kunt ook logische operators gebruiken om zoiets als een voorwaardelijke
func = lambda element: (expression and DoSomething) or DoSomethingIfExpressionIsFalse
Je kunt hier
meer zien over logische operators
Antwoord 9
wat je precies nodig hebt is
def fun():
raise Exception()
f = lambda x:print x if x==2 else fun()
roep nu de functie aan zoals je wilt
f(2)
f(3)
Antwoord 10
Dit fragment zou je moeten helpen:
x = lambda age: 'Older' if age > 30 else 'Younger'
print(x(40))
Antwoord 11
Een gemakkelijke manier om een if in lambda uit te voeren, is door lijstbegrip te gebruiken.
Je kunt geen uitzondering maken in lambda, maar dit is een manier in Python 3.x om iets te doen dat in de buurt komt van je voorbeeld:
f = lambda x: print(x) if x==2 else print("exception")
Nog een voorbeeld:
geef 1 terug als M anders 0
f = lambda x: 1 if x=="M" else 0
Antwoord 12
de oplossing voor de gegeven scenerio is:
f = lambda x : x if x == 2 else print("number is not 2")
f(30) # number is not 2
f(2) #2
Antwoord 13
De volgende voorbeeldcode werkt voor mij. Ik weet niet zeker of het direct verband houdt met deze vraag, maar ik hoop dat het in sommige andere gevallen helpt.
a = ''.join(map(lambda x: str(x*2) if x%2==0 else "", range(10)))
Antwoord 14
Probeer het:
is_even = lambda x: True if x % 2 == 0 else False
print(is_even(10))
print(is_even(11))
Uit:
True
False
Antwoord 15
Ik hoop dat dit een beetje helpt
u kunt dit probleem op de volgende manier oplossen
f = lambda x: x==2
if f(3):
print("do logic")
else:
print("another logic")
Antwoord 16
Ik denk dat dit is wat je zocht
>>> f = lambda x : print(x) if x==2 else print("ERROR")
>>> f(23)
ERROR
>>> f(2)
2
>>>