Juste de l'outil pour mon propre amusement, et je veux utiliser un Lambda, parce que je me sens comme ça. Puis-je remplacer cette fonction avec un Lambda? Élémentaire, oui. Mais je suis intéressé à savoir ... p> p>
8 Réponses :
lambda num: num % 2 != 0
isodd = lambda number: number %2 != 0
Oui, vous pouvez:
isodd = lambda x: x % 2 != 0
Et si vous n'avez pas vraiment besoin d'une fonction, vous pouvez le remplacer même sans Lambda. :)
if number % 2: print "Odd!" else: print "Even!"
Voir, c'était le cœur de la question. J'étais sous l'impression que les deux et 1 sont vrais en python, car ils sont tous deux des INTS.
Docs.python.org/Library/stdtypes.html - "Les valeurs suivantes sont Considéré comme faux: ... zéro de tout type numérique, par exemple 0 "
Je le collerais toujours dans une fonction. Avec MODULO 2, j'ai toujours besoin d'une seconde ou de deux pour déterminer si elle évalue vrai pour même ou pour impair. si isodd (numéro) est plus claire. Petits détails comme celui-ci ont tendance à ajouter de la différence réelle.
@Silentw: Vous avez peut-être pensé à Ruby. Les seules valeurs "fausses" il y a nul et faux.
@Alexander: Veuillez perdre les parenthèses de votre si code> instruction.
@John Machin: Bien sûr. Je les ai ajoutés pour rendre l'idée plus claire, mais tu as raison, ils me font bug moi aussi.
D'autres ont déjà donné des réponses qui couvrent votre cas particulier. En général, cependant, lorsque vous avez réellement besoin em> un si code> -statement, vous pouvez utiliser l'expression conditionnelle. Par exemple, si vous devriez retourner des chaînes
"false" code> et
"vrai" code> plutôt que des valeurs booléennes, vous pouvez le faire:
lambda num: "False" if num%2==0 else "True"
Et n'oubliez pas non plus que vous pouvez imiter des phrases conditionnelles complexes avec une simple logique de court-circuit, en tirant parti de "et" et "de retourner certaines de leurs ellements (le dernier évalué) ... Par exemple, Dans ce cas, supposant que vous voudriez retourner quelque chose de différent de vrai ou faux
isodd = lambda numéro: (false, true) [Number & 1] Code> P>
Chaque fois que vous voyez vous-même écrire: Vous devez le remplacer par une seule ligne: p> Votre fonction est alors devient: P> def isodd(number):
return number % 2 != 0
Chaque fois que vous voyez vous-même écrire si (une condition): code> ou
retour (une condition) code>, perdez les parenthèses.
Ouais je sais. Mais je pensais que l'exemple est mieux lu, étant donné que une condition code> n'est pas une syntaxe valide. Peut-être que j'aurais dû utiliser des crochets.