I want to filter elements from a list of lists, and iterate over the elements of each element using a lambda. For example, given the list:
a = [[1,2,3],[4,5
Using lambda
with filter
is sort of silly when we have other techniques available.
In this case I would probably solve the specific problem this way (or using the equivalent generator expression)
>>> a = [[1, 2, 3], [4, 5, 6]]
>>> [item for item in a if sum(item) > 10]
[[4, 5, 6]]
or, if I needed to unpack, like
>>> [(x, y, z) for x, y, z in a if (x + y) ** z > 30]
[(4, 5, 6)]
If I really needed a function, I could use argument tuple unpacking (which is removed in Python 3.x, by the way, since people don't use it much): lambda (x, y, z): x + y + z
takes a tuple and unpacks its three items as x
, y
, and z
. (Note that you can also use this in def
, i.e.: def f((x, y, z)): return x + y + z
.)
You can, of course, use assignment style unpacking (def f(item): x, y, z = item; return x + y + z
) and indexing (lambda item: item[0] + item[1] + item[2]
) in all versions of Python.