Array.prototype.find()
возвращает первый соответствующий элемент в массиве с заданной функцией предиката или undefined
, когда совпадения нет.
Python имеет функцию filter()
, которая фильтрует итерируемое по предикату, и next()
, который создает первый элемент итерируемого или необязательное значение по умолчанию. Сочетая их, вы получите эквивалент:
next(filter(pred, iter), None)
где pred
- это вызываемый объект, который возвращает True
, когда элемент соответствует критериям поиска.
Демо-версия:
>>> iterable = [42, 81, 117]
>>> parity_odd = lambda v: v % 2 == 1
>>> next(filter(parity_odd, iterable), None)
81
>>> iterable = [42, 2, 4]
>>> next(filter(parity_odd, iterable), None) is None
True
Если вы удалите второй аргумент для next()
, исключение StopIteration
будет вызвано, если нет соответствующего элемента.