Python lambda avec si mais sans le reste
J'ai écrit certains lambda fonctions et ne pouvait pas comprendre cela. Est-il un moyen d'avoir quelque chose comme lambda x: x if (x<3)
en python? Comme lambda a,b: a if (a > b) else b
fonctionne ok. Jusqu'à présent lambda x: x < 3 and x or None
semble être le plus proche que j'ai trouvé.
Vous devez vous connecter pour publier un commentaire.
Un lambda, comme n'importe quelle fonction doit retourner une valeur.
lambda x: x if (x<3)
ne fonctionne pas car il ne précise pas de quoi retourner si pasx<3
. Par défaut, les fonctions de retourNone
, de sorte que vous pourriez faireMais peut-être que vous êtes à la recherche d'une compréhension de liste avec un
if
condition. Par exemple:lambda x:
doit être un expression, n'est pas un énoncé.lambda
comme si il est en fait écrit quedef lambda(x, y): return ...
Quel est le problème avec
lambda x: x if x < 3 else None
?Désolé pour réanimer un zombie.
Je cherchais une réponse à la même question, et j'ai trouvé que "filtre" apporté exactement ce que je cherchais:
La mise en œuvre est la même dans les deux 2.x et 3.x:
https://docs.python.org/2/library/functions.html#filter
https://docs.python.org/3/library/functions.html#filter
Vous pouvez toujours essayer de les appeler "filtre" pour les conditionnelle des contrôles. Fondamentalement,
map()
à chaque occurrence de l'iterables, de sorte qu'il ne peut pas choisir. Mais le filtre peut aider à affiner le choix. Par exemple, j'ai créer une liste de 1 à 19 et souhaitez créer un tuple de carrés de seulement un nombre pair.