在函数定义中正确使用lambda

Mor*_*a R 3 python string lambda python-3.4

我想写一个识别回文的简单函数:

>>> def palindrome(s):
    return s == s[::-1]
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它区分大小写并修复我可以做的:

>>> def palindrome(s):
    return s.lower() == s[::-1].lower()

>>> palindrome('Aba')
True
Run Code Online (Sandbox Code Playgroud)

但我觉得它不是很优雅.我尝试使用lambda表达式小写输入,但我做错了,不知道如何解决它:

>>> def palindrome(lambda s : s.lower()):
    return s == s[::-1]
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

Pad*_*ham 6

只需调用一次,将s重新分配给值并忘记lambda:

def palindrome(s):
    s = s.lower()
    return s == s[::-1]
Run Code Online (Sandbox Code Playgroud)

  • 你也意识到`lambda s:s.lower()`比`s = s.lower()`有更多的字符? (3认同)

Wil*_*sem 6

您不能使用lambda表达式来描述应对输入参数执行的操作(但您可以使用它lambda来定义默认值).你可以做两件事:


Ism*_*awi 6

这不是真正惯用的python,但你要找的是这样的:

def palindrome(s):
    return (lambda x: x == x[::-1])(s.lower())
Run Code Online (Sandbox Code Playgroud)

也就是说,你定义一个lambda函数并立即调用它,绑定s.lower()x.