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

wow*_*yoo 0 python lambda list-comprehension

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

che*_*ner 6

它没有任何影响.该lambda表达式定义一个function对象,并且if在列表理解后卫期望一个布尔值.function对象的"真实性" 总是True如此,因此列表理解与此完全相同

[x for x in (1,2,3) if True]
Run Code Online (Sandbox Code Playgroud)

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

[x for x in (1,2,3) if (lambda y :y-2)(x)]
Run Code Online (Sandbox Code Playgroud)

那么你将有一个实际的过滤器,有效地检查一个值是否不等于2.(y - 2将是非零,因此True,对于y2以外的任何值)