Я хочу ідіоматичний спосіб знайти перший елемент у списку, який відповідає присудку.
Поточний код досить некрасивий:
[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
Але зовсім несмачно починати наповнювати код такими функціями утиліти (і люди, мабуть, не помітять, що вони вже є, тому вони, як правило, повторюються з часом), якщо є вбудовані модулі, які вже забезпечують те саме.