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