So you're artificially building something that's gives you some of the benefit of using a generator expression in a list expression, instead of just using a generator expression?
I wouldn't call it artificially building something, but I suppose yes. I also find this code to be much more readable than generator code. Once you understand the function, all you have to do is pass it a function that returns a boolean.