前面的愚蠢問題:我想要一種習慣方式來查找列表中與謂詞相匹配的第一個元素。找到與謂詞相匹配的序列中的第一個元素
當前的代碼是相當難看:
[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