Listedeki bir yüklemle eşleşen ilk öğeyi bulmak için deyimsel bir yol istiyorum.
Mevcut kod oldukça çirkin:
[x for x in seq if predicate(x)][0]
Bunu şu şekilde değiştirmeyi düşündüm:
from itertools import dropwhile
dropwhile(lambda x: not predicate(x), seq).next()
Ama daha zarif bir şey olmalı ... Ve None
herhangi bir eşleşme bulunamazsa istisna oluşturmak yerine bir değer döndürürse iyi olur .
Ben sadece gibi bir işlevi tanımlayabilirsiniz biliyorum:
def get_first(predicate, seq):
for i in seq:
if predicate(i): return i
return None
Ancak kodu zaten bu gibi yardımcı işlevlerle doldurmaya başlamak oldukça tatsızdır (ve insanlar muhtemelen zaten orada olduklarını fark etmeyeceklerdir, bu yüzden zaten aynı şeyi sağlayan yerleşikler varsa).