Finding the first occurrence in a collection of data is a common problem.
# Non Idiomatic found_line = None for line in logfile: if regex.match(line): found_line = line break return found_line
# Idiomatic return next(line for line in logfile if regex.match(line), None)
# Idiomatic (thanks to Suresh V) from itertools import dropwhile return next(dropwhile(lambda x: not regex.match(x), logfile), None)
The idiomatic solution is not only more compact, but it reads better. It also gives the interpreter the opportunity to be more efficient in how it allocates memory due to the generator expression