我想要一种惯用的方式来找到与谓词匹配的列表中的第一个元素。
当前代码非常丑陋:
[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
但是,如果已经有内置的插件开始用这样的实用函数填充代码,这是很鸡肋的(人们可能不会注意到它们已经在那里,因此随着时间的推移它们会不断重复出现)。
2
除了比“ python sequence find function ” 晚问,这个问题的标题要好得多。
—
狼