前面的愚蠢问题:我想要一种习惯方式来查找列表中与谓词相匹配的第一个元素。找到与谓词相匹配的序列中的第一个元素
当前的代码是相当难看:
[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
但它是相当鸡肋开始填充这样的效用函数(和人的代码可能不会注意到,他们已经在那里,所以他们往往会随着时间的推移重复),如果有内置的插件已经提供相同的。
这不是一个愚蠢的问题,而@ j-f-sebastian:这不是重复的。这个问题具体是关于返回一个对象,并返回`None`而不是抛出异常。这也是关于优雅。另一个问题更多的是一个问题,并没有提出这些问题,至少不是很清楚。 – 2017-03-06 16:05:30
除了被后来问不是“[蟒蛇序列查找功能(https://stackoverflow.com/questions/6039425/python-sequence-find-function)”,这个问题有一个**更好的标题**。 – Wolf 2017-07-20 10:23:19