查找序列中满足谓词的第一个元素。
- 论坛
- 查找序列中满足谓词的第一个元素。
20 浏览
查找序列中满足谓词的第一个元素。
我想找到一种惯用的方式来找到列表中与谓词匹配的第一个元素。
目前的代码相当丑陋:
[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
但是,如果已经有内置函数提供了相同的功能,这样填充代码并不太好(而且人们可能不会注意到它们已经存在,所以它们往往会被重复使用)。