Don't overdo comprehensions and generators
We've seen how powerful list
comprehensions and generator expressions can be. And they are, don't get me wrong, but the feeling that I have when I deal with them is that their complexity grows exponentially. The more you try to do within a single comprehension or a generator expression, the harder it becomes to read, understand, and therefore maintain or change.
If you check the Zen of Python again, there are a few lines that I think are worth keeping in mind when dealing with optimized code:
>>> import this ... Explicit is better than implicit. Simple is better than complex. ... Readability counts. ... If the implementation is hard to explain, it's a bad idea. ...
Comprehensions and generator expressions are more implicit than explicit, can be quite difficult to read and understand, and they can be hard to explain. Sometimes you have to break them apart using the inside-out technique, to understand what's going on.
To give you an example,...