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

在与谓词匹配的序列中查找第一个元素

在与谓词匹配的序列中查找第一个元素

慕侠2389804 2019-10-26 13:27:56
我想要一种惯用的方式来找到与谓词匹配的列表中的第一个元素。当前代码非常丑陋:[x for x in seq if predicate(x)][0]我已经考虑过将其更改为:from itertools import dropwhiledropwhile(lambda x: not predicate(x), seq).next()但是必须有一些更优雅的方法……如果返回一个None值而不是没有找到匹配项引发异常,那将是一个很好的选择。我知道我可以像这样定义一个函数:def get_first(predicate, seq):    for i in seq:        if predicate(i): return i    return None但是,如果已经有内置的插件开始用这样的实用函数填充代码,那是很鸡肋的(人们可能不会注意到它们已经在那里,因此随着时间的推移它们会不断重复)。
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

next(x for x in seq if predicate(x))


StopIteration如果没有,它将引发。


next(ifilter(predicate, seq), None)


None如果没有这样的元素,则返回。


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

添加回答

举报

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