将if语句转换为lambda

时间:2014-08-14 15:16:52

标签: python if-statement lambda

我有这样的if语句:

if brand_text == 'eth1' and group_name == 'size':
    group_name = 'feature'

我需要将它转换为lambda,所以我尝试了:

xx = lambda one, two: 'feature' if one == 'eth1' and two == 'size' else pass
xx(brand_text, group_name)

但它与pass

一起说明了
SyntaxError: invalid syntax

3 个答案:

答案 0 :(得分:3)

您无法在group_name中分配给lambda,因此您必须使用返回的值:

group_name = xx(brand_text, group_name)

在否定的情况下,您可能希望保留原始group_name,因此适当的表达式将是:

xx = lambda bt, gn: 'feature' if bt == 'eth1' and gn == 'size' else gn

答案 1 :(得分:0)

lambda创建一个匿名函数,在所有情况下都返回一个值,而if语句仅在某些条件下为group_name赋值。如果您真的想使用lambda,则必须返回None。此外,pass是一个声明,不能在线使用,即在声明中。这应该有效:

xx = lambda one, two: 'feature' if one == 'eth1' and two == 'size' else None xx(brand_text, group_name)

答案 2 :(得分:0)

lambda语句与def语句之间唯一(或至少是最重要的)差异是lambda的正文必须是单个表达式< / em>,其值隐式返回。 pass是一个语句,不能嵌入条件表达式的else部分。