How to len(generator()) [duplicate]

The conversion to list that’s been suggested in the other answers is the best way if you still want to process the generator elements afterwards, but has one flaw: It uses O(n) memory. You can count the elements in a generator without using that much memory with:

sum(1 for x in generator)

Of course, be aware that this might be slower than len(list(generator)) in common Python implementations, and if the generators are long enough for the memory complexity to matter, the operation would take quite some time. Still, I personally prefer this solution as it describes what I want to get, and it doesn’t give me anything extra that’s not required (such as a list of all the elements).

Also listen to delnan’s advice: If you’re discarding the output of the generator it is very likely that there is a way to calculate the number of elements without running it, or by counting them in another manner.

Leave a Comment