filtering elements from list of lists in Python?

后端 未结 7 776
鱼传尺愫
鱼传尺愫 2020-12-06 11:29

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         


        
相关标签:
7条回答
  • 2020-12-06 11:56

    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.

    0 讨论(0)
提交回复
热议问题