当我们有其他可用技术时,使用lambda
withfilter
有点愚蠢。
在这种情况下,我可能会以这种方式(或使用等效的生成器表达式)解决特定问题
>>> a = [[1, 2, 3], [4, 5, 6]]
>>> [item for item in a if sum(item) > 10]
[[4, 5, 6]]
或者,如果我需要打开包装,例如
>>> [(x, y, z) for x, y, z in a if (x + y) ** z > 30]
[(4, 5, 6)]
如果我真的需要一个功能,我可以使用参数元组拆包(这是在Python 3.x中删除,顺便说一下,因为人不太多使用它):lambda (x, y, z): x + y + z
需要一个元组,并解压缩它的三个项目,如x
,y
和z
。(请注意,您也可以在中使用它def
,即:def f((x, y,z)): return x + y + z
。)
当然,您可以在所有版本的Python中使用分配样式解压缩(def f(item): x, y, z = item; return x + y + z
)和索引(lambda item: item[0] + item[1] + item[2]
)。