查找序列中满足谓词的第一个元素。

20 浏览
0 Comments

查找序列中满足谓词的第一个元素。

我想找到一种惯用的方式来找到列表中与谓词匹配的第一个元素。

目前的代码相当丑陋:

[x for x in seq if predicate(x)][0]

我考虑过将其改为:

from itertools import dropwhile
dropwhile(lambda x: not predicate(x), seq).next()

但肯定有更优雅的解决方法...如果找不到匹配项,它返回一个None值而不是引发异常会更好。

我知道我可以定义一个函数,如下所示:

def get_first(predicate, seq):
    for i in seq:
        if predicate(i): return i
    return None

但是,如果已经有内置函数提供了相同的功能,这样填充代码并不太好(而且人们可能不会注意到它们已经存在,所以它们往往会被重复使用)。

0