Use generator comprehensions.
If you want to find one and just one element or None
use default
argument in call for next
, it won’t raise StopIteration
if the item was not found in the list:
first_or_default = next((x for x in lst if ...), None)