我有这样的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
答案 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
部分。