[Tutor] increment a counter inside generator
David Knupp
knupp at well.com
Thu Mar 14 02:13:09 CET 2013
On Wed, 13 Mar 2013, Oscar Benjamin wrote:
> (it's not actually a generator by the way)
As Oscar points out, you're not working with a generator expression. The
syntactical difference between a list comprehension and a generator
expression is subtle. List comprehensions use square brackets, but
generator expressions use parentheses.
>>> foo = [n for n in xrange(10)]
>>> foo
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> bar = (n for n in xrange(10))
>>> bar
<generator object at 0xb7eaadec>
FWIW, if you're working with very large lists, but don't need to create
the full list in memory, then a generator expression is usually preferred.
To get the number of items a generator would return, you can use sum()
like this:
>>> gen = (n for n in xrange(some_really_huge_number))
>>> sum(1 for n in gen) # outputs some_really_huge_number
--dk.
More information about the Tutor
mailing list