lambda部分对此列表理解有什么影响?

时间:2016-12-11 14:01:12

标签: python lambda list-comprehension

根据理解的语法规范,[x for x in (1,2,3) if lambda x :x-2]有效。但是,[x for x in (1,2,3)]具有相同的结果。 lambda 部分对此列表理解有什么影响?

1 个答案:

答案 0 :(得分:6)

没有任何影响。 lambda表达式定义function对象,列表推导中的if保护期望布尔值。 function对象的“真实性”始终为True,因此列表理解与

完全相同
[x for x in (1,2,3) if True]

如果您实际调用结果函数,例如

[x for x in (1,2,3) if (lambda y :y-2)(x)]

然后你会有一个实际的过滤器来有效地检查一个值是否不等于2.(y - 2对于{{1}的任何值都不为零,因此True除了2。)