Python one-liner: Getting only the first match in a list comprehension
2013 January 30
next() with a generator expression to simulate a
break statement in a for-loop. Something like this:
val = next((x for x in some_list if match(x)), default_val)
...which is the same as:
val = default_val for x in some_list: if match(x): val = x break
Commenter Emanuel Hoogeveen suggested the
default_val, because otherwise the
next() would raise a
StopIteration if there were no matches in the list. He found the answer here on StackOverflow.
And thanks to @ashleyconnor for finding a bug in my code and submitting a pull request!