为了账号安全,请及时绑定邮箱和手机立即绑定

从匹配条件的迭代器中获取第一项。

从匹配条件的迭代器中获取第一项。

猛跑小猪 2019-06-28 10:54:11
从匹配条件的迭代器中获取第一项。我想从符合条件的列表中获得第一项。重要的是,生成的方法不能处理整个列表,这可能相当大。例如,以下功能就足够了:def first(the_iterable, condition = lambda x: True):     for i in the_iterable:         if condition(i):             return i这个函数可以使用如下所示:>>> first(range(10))0>>> first(range(10), lambda i: i > 3)4然而,我想不出一个好的内置/一个班轮让我这样做。如果没有必要的话,我不特别想复制这个函数。是否有一个内置的方式,以获得第一个项目匹配的条件?
查看完整描述

3 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

作为一个可重用、文档化和测试的功能

def first(iterable, condition = lambda x: True):
    """
    Returns the first item in the `iterable` that
    satisfies the `condition`.

    If the condition is not given, returns the first item of
    the iterable.

    Raises `StopIteration` if no item satysfing the condition is found.

    >>> first( (1,2,3), condition=lambda x: x % 2 == 0)
    2
    >>> first(range(3, 100))
    3
    >>> first( () )
    Traceback (most recent call last):
    ...
    StopIteration
    """

    return next(x for x in iterable if condition(x))


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 662 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信