def palindrome(s):
s = s.lower()
return s == s[::-1]
这是非常简单易用和易于理解的答案,100% 正确且良好。
但是如果你想使用 lambda 表达式,你必须思考如何、什么、为什么等等,所以让我们进入 FUNCTIONAL PROGRAMMING 的神奇世界。
如果您不知道lambda 表达式是什么,基本上当您输入单词lambda 时,它会指定您稍后会给它一些值,例如输入lambda a 意味着您将为它提供1 个值(参数),明确键入 lambda a, b 意味着您将为它提供 2 个值(参数)。所以现在“这个lambda这个词是什么意思”已经完成了,让我们更深入地了解FUNCTIONAL PROGRAMMING的神奇世界。
所以现在当你告诉 python 它必须等待一段时间(或者可能根本没有时间)才能获得这个值以便它可以对它做一些魔法时,你可以告诉它如何处理它
some_var = lambda some_string: some_string.lower()
所以现在这意味着它将获得一些价值,我们希望它是某种字符串,我们可以并将其保存在 some_var 中,原因只有 PHP programmers 和我们(我)知道。
接下来真的很简单,我们只是返回检查它是否是回文
return some_var == some_var[::-1]
让我们弄点胶水,用我们之前的东西构建这个lambda 野兽
def palindrome():
some_var = lambda some_string : some_string.lower()
return some_var == some_var[::-1]
如您所见,我们不再需要在方法中声明我们使用了一些微不足道的s,因此我们只需按DEL,我们就可以进入FUNCTIONAL PROGRAMMING 的美丽世界。
所以让我们尝试调用这个函数,但问题是如何做到这一点?
palindrome("superpalindrome") == False
虽然它没有编译,因为它认为我们试图给回文方法一些参数,而定义根本没有。所以函数的正确调用应该是
palindrome()("superpalindrome") == False
简而言之,这很神奇,在大多数情况下,lambda 表达式实际上在时间使用方面更糟糕,所以你应该坚持以 OOP 方式甚至 Python 方式来做事。如果你想使用 lambda 表达式,你应该尝试切换到 Haskell(我强烈建议)或 Scala。如果您还有任何问题,请随时问我,我喜欢谈论 Haskell。或FUNCTIONAL PROGRAMMING。
更加简化的完整答案
def palindrome():
return lambda some_str : some_str.lower() == some_str.lower()[::-1]
method = palindrome()
print(method("cococ"))