As much as this is totally valid Python, I'm not sure how I feel about the legibility of using the for...else construct. It's so uncommon I always have to re-look it up whenever I run into it. Even though it's slightly more verbose, I'd argue it's probably more readable for most Python users to simply have a check whether the loop found what it was looking for afterward. 

Not going to be a stickler here, but that's my thinking.