
you talked about builtin *iterables*
My mistake, I reused the terminology used by the original author to make it easier to follow.
The point of iterators like map, zip and filter is to *avoid* performing the computation until it is required.
Of course. Maybe I wasn't clear enough. I don't know why we're bringing up these operators in a discussion about comprehensions. And what would a "range" comprehension even look like? To me the fact that there's no comprehensions for enumerate, filter, map, range, reversed and zip doesn't contribute to making dict, list and set exceptional cases. As I said we're left with bytearray, frozenset and memoryview. These are much less frequently used and don't even have a literal form so expecting comprehensions for them would be a bit nonsensical. On the other hand strings, bytes, lists, dicts and sets all have literal forms but only lists, dicts and sets have comprehensions. Three out of five doesn't make them exceptional cases so it's only logical to at least consider the idea of adding comprehensions for strings (and bytes) too.