Get the first item from an iterable that matches a condition

前端 未结 13 2268
感情败类
感情败类 2020-11-22 04:43

I would like to get the first item from a list matching a condition. It\'s important that the resulting method not process the entire list, which could be quite large. For e

13条回答
  •  感情败类
    2020-11-22 05:00

    In Python 3:

    a = (None, False, 0, 1)
    assert next(filter(None, a)) == 1
    

    In Python 2.6:

    a = (None, False, 0, 1)
    assert next(iter(filter(None, a))) == 1
    

    EDIT: I thought it was obvious, but apparently not: instead of None you can pass a function (or a lambda) with a check for the condition:

    a = [2,3,4,5,6,7,8]
    assert next(filter(lambda x: x%2, a)) == 3
    

提交回复
热议问题